我正在使用C#加载C ++ dll,并收到此错误:
“MyApp.exe中出现未处理的'System.BadImageFormatException'类型异常” “附加信息:尝试加载格式不正确的程序。(HRESULT异常:0x8057000B)
我无法弄清楚原因。 C ++ dll是使用vs2012向导,win32应用程序,带有pre-head的dll生成的。它使用x64选项构建。这是代码:
// MyNativeDLL.cpp : Defines the exported functions for the DLL application.
//
#include "stdafx.h"
//char* pMemoryBuffer = NULL;
using namespace std;
__declspec(dllexport) long Test()
{
long a;
a = 1;
a++;
return a;
}
调用它的C#代码是:
[DllImport("C:\\MyNativeDLL\\x64\\Debug\\MyNativeDLL.dll", EntryPoint = "Test")]
private extern static int Test();
void doJob()
{
long a = Test(); // exception thrown here
}
C#代码是使用Any CPU选项构建的,它正在加载x64本机dll。 我想知道我哪里做错了?我一直在努力,但真的被困在这里。谢谢!
更新 当我使用win 32选项编译我的本机dll并设置正确的dll路径时,它会成功加载。但是当我用x64选项编译我的本机dll时,加载正确的路径,加载失败。
答案 0 :(得分:1)
如你所说: C ++ dll是使用vs2012向导,win32应用程序,带有pre-head的dll生成的。它使用x64选项构建
DLL和exe必须是32位,或者都是64位。