12

我设计了一个 C# Windows appln,它还在内部调用了一些函数 [通过 DllImport() 从 C++ DLL 导入]

我的 C++ 代码在 Win32 平台中构建为 .DLL,而我的 C# 构建为“任何 CPU”平台。

当我在我的测试机器上运行 .EXE (C#) 时,我遇到了一个错误

尝试从 hresult 0x8007000B 加载格式不正确的程序异常

但是,如果我在我的机器上安装 VSS 2010 然后运行 ​​EXE,则不会遇到此错误。

1)这个错误的原因?2)为什么安装VSS时没有观察到错误?

我使用 Win7 OS(64 位)在AnyCPU平台中构建 .EXE(C#),这又依赖于Win32中构建的 DLL(使用 DllImport 在 C# 中导入的 C++ Dll)

4

1 回答 1

11

这几乎总是因为您从 64 位 dll/exe 等调用 32 位代码或从 32 位 dll 调用 64 位 dll。如果您为 x86 构建 c# 会发生什么?它仍将在 64 位上运行。

于 2012-09-18T19:49:23.757 回答