尝试加载格式不正确的程序

时间:2014-06-27 19:03:28

标签: c# c++ visual-studio-2012 dll dllimport

我正在使用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时,加载正确的路径,加载失败。

1 个答案:

答案 0 :(得分:1)

如你所说:   C ++ dll是使用vs2012向导,win32应用程序,带有pre-head的dll生成的。它使用x64选项构建

DLL和exe必须是32位,或者都是64位。