我从一个普通的C#控制台程序中得到这个错误,该程序正在使用作为C ++ CLI项目的构建输出而生成的DLL。我有一个简单的DumbThing
public ref class
和一个静态方法。我想简单地调用该函数或者至少实例化一个微小的DumbThing对象,看看C#可以调用它从C ++ CLI生成的DLL中获取的代码,但是它没有工作,因为它抛出了一个让我更加困惑的错误: / p>
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.
一位同事向我指出,它可能是一个编译时间问题(某些选项),但我没有任何可能导致它的线索。有人可以提供一些起点提示吗?
答案 0 :(得分:1)
这可能是一个小问题。如果您为特定平台编译了C ++ / CLI项目,请确保您的C#项目已相应地设置其平台。 C#项目的默认值是“任何CPU”,它导致JIT编译器在64位体系结构上生成x64代码。如果您的C ++ / CLI项目是为x86构建的,则无法将其加载到64位计算机上的x64进程中。