3

我从一个普通的 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.

一位同事向我指出这可能是编译时问题(某些选项),但我没有任何线索可能导致它。谁能提供一些起点提示?

4

1 回答 1

3

应该是位元问题。如果您为特定平台编译了 C++/CLI 项目,请确保您的 C# 项目已相应地设置其平台。C# 项目的默认值为“任何 CPU”,这会导致 JIT 编译器在 64 位架构上生成 x64 代码。如果您的 C++/CLI 项目是为 x86 构建的,则无法将其加载到 64 位机器上的 x64 进程中。

于 2012-07-22T09:37:22.243 回答