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

问题描述 投票:0回答:1

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

c# c++ visual-studio-2012 dll dllimport
1个回答
1
投票

正如您提到的: C++ dll 是使用 vs2012 向导、win32 应用程序、带有 pre-head 的 dll 生成的。它是使用 x64 选项构建的

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

© www.soinside.com 2019 - 2024. All rights reserved.