EEFileLoadException * __ptr64 - C#的异常从C ++托管DLL抛

2019-09-19 22:37发布

我得到这个错误从被消耗作为一个C ++ CLI项目的构建输出生成一个DLL正常的C#控制台程序中。 在那里,我有一个简单的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..

UPDATE:原始异常下面,还有另一个第一次机会异常:

First-chance exception at 0x77cace3b (ntdll.dll) in DumbTest.exe: 0xC0000005: Access violation reading location 0xffffffffffffffff.

一位同事向我指出,这可能是一个编译时间问题(一些选项),但我没有任何线索,是什么引发它。 任何人都可以请提供一些出发点提示吗?

Answer 1:

这可能是一个位元的问题。 如果你为特定平台编译你的C ++ / CLI的项目,要确保你的C#项目已经相应地设置了平台。 默认为C#项目是“任何CPU”这使JIT编译器生成上64位x64架构代码。 如果你的C ++ / CLI项目的建成86然后它不能被加载到64位机上的64位进程。



文章来源: C# exception thrown from a C++ managed dll - EEFileLoadException * __ptr64