我从正常的 C# 控制台程序中收到此错误,该程序使用作为 C++ CLI 项目的构建输出生成的 DLL。那里我有一个简单的DumbThing
public ref class
用静态方法。我想简单地调用该函数,或者至少实例化一个微小的 DumbThing 对象,并看到 C# 可以调用它从 C++ CLI 生成的 DLL 中获取的代码,但它不起作用,因为它会引发一个让我更加困惑的错误:
First-chance exception at 0x000007fefd2acacd (KernelBase.dll) in DumbTest.exe: Microsoft C++ exception: EEFileLoadException * __ptr64 at memory location 0x007fc228..
更新:在原始异常下方,还有另一个第一次机会异常:
First-chance exception at 0x77cace3b (ntdll.dll) in DumbTest.exe: 0xC0000005: Access violation reading location 0xffffffffffffffff.
一位同事向我指出,这可能是编译时问题(某些选项),但我没有任何线索可能导致它。有人可以提供一些起点提示吗?
这可能是一个位数问题。如果您为特定平台编译了 C++/CLI 项目,请确保您的 C# 项目已相应地设置其平台。 C# 项目的默认值为“任何 CPU”,这会导致 JIT 编译器在 64 位架构上生成 x64 代码。如果您的 C++/CLI 项目是为 x86 构建的,则无法将其加载到 64 位计算机上的 x64 进程中。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)