我正在尝试在这两种语言之间进行非常基本的互操作。我有一些性能密集型代码,我想在C++中处理,然后将结果返回到我的应用程序。
所有内容都将在Visual Studio中编译。
我选择了int作为输入和输出类型,因为编组可能会有点棘手,而且不是我要处理的重点。
C++代码如下:
#include "stdafx.h" // default from vs2013, no idea what it is
_declspec(dllexport) int Diu(int p) {
return p * 2;
}
C# 我拥有:
using System;
namespace Interop {
public class Program{
[System.Runtime.InteropServices.DllImport("Hardworker.dll")]
public static extern int Diu(int p);
private static void Main(string[] args) {
Console.WriteLine(Diu(2));
}
}
}
这是一个相当基础的例子。但我遇到了异常:
未经处理的异常类型 'System.BadImageFormatException' 发生在 Interop.exe 中
其他信息:尝试加载格式不正确的程序。(HRESULT 异常代码为 0x8007000B)
C++ 项目是作为控制台应用程序 > Dll 在创建对话框中创建的。我在反汇编器中检查了 C++ dll,可以看到一个导出符号 Diu。
哎呀,我在设置互操作方面错过了什么?