gpt4 book ai didi

.net - OracleConnection 在托管 C++ 中抛出 EEMessageException

转载 作者:太空宇宙 更新时间:2023-11-04 14:28:38 26 4
gpt4 key购买 nike

我有一个 native C++ 应用程序,它需要连接到 Oracle 数据库。 Oracle 数据层是用 C# 编写的,所以我希望将代码作为 DLL 重用。

我决定尝试使用托管 C++ 来弥合 native C++ 和 C# 之间的差距。托管 C++ 适配器层工作正常(几乎);非托管 C++ 可执行文件可以毫无问题地调用 C# 代码中的各种类和方法。

错误:

System.Data.OracleClient.OracleConnection除外,这当然是非常重要的部分。

当我对其调用 Open() 时,将抛出 EEMessageException。我在 Windows XP 上使用 Oracle 9。

我的 C# 数据对象 dll 在从 C# exe 调用时工作正常。所以我认为它在将程序集加载到在 dll 中托管 CLR 的 native 进程中存在某种问题或 oracle 驱动程序存在问题。

这是在普通 C# 应用程序中正常工作的 C# dll。

………………
'OracleTest.vshost.exe' (Managed): Loaded 'C:\WINDOWS\assembly\GAC_MSIL\System.Configuration\2.0.0.0__b03f5f7f11d50a3a\System.Configuration.dll', Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled.
'OracleTest.vshost.exe' (Managed): Loaded 'C:\WINDOWS\assembly\GAC_32\System.Transactions\2.0.0.0__b77a5c561934e089\System.Transactions.dll', Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled.
'OracleTest.vshost.exe' (Managed): Loaded 'C:\WINDOWS\assembly\GAC_32\System.EnterpriseServices\2.0.0.0__b03f5f7f11d50a3a\System.EnterpriseServices.dll', Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled.
………………

这里是通过托管 C++ 层调用的 native C++ 应用程序中的“爆炸”:

'QFeedTest.exe': Loaded 'C:\app\Oracle\bin\oci.dll', Binary was not built with debug information.
First-chance exception at 0x7c812afb in MyUnmanagedCPP.exe: Microsoft C++ exception: EEMessageException at memory location 0x0012d014.


问题:

我可以做任何项目设置来让它正确加载 Oracle 驱动程序吗?

最佳答案

您可以使用 Fusion log viewer (fuslogvw.exe) 记录 .Net 尝试加载程序集时发生的情况。另一件事是将您的应用程序作为托管代码而不是 native 调试,然后您应该能够看到实际的托管异常并了解发生了什么。如果由于某种原因无法做到这一点,您可以使用适用于 Windows 的调试工具并加载 SOS 扩展 - 这使您可以更轻松地在 WinDBG 中调试 .Net 代码(您也可以在 Visual Studio 中使用 SOS)。

关于.net - OracleConnection 在托管 C++ 中抛出 EEMessageException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/895994/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com