如何在c#和c++之间进行互操作
本文关键字:之间 互操作 c++ | 更新日期: 2023-09-27 18:16:59
我正在尝试两种语言之间非常基本的互操作。我基本上有一些性能密集型代码我想在c++中处理然后将结果返回到我的应用程序
所有将在Visual Studio中编译。
我选择int作为输入和输出类型,因为封送可能有点不稳定,并且不是我真正要处理的。
c++ i have:
#include "stdafx.h" // default from vs2013, no idea what it is
_declspec(dllexport) int Diu(int p) {
return p * 2;
}
c# i have:
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
附加信息:尝试用不正确的格式。(Exception from HRESULT: 0x8007000B)
c++项目在创建对话框中作为控制台应用程序> Dll创建。我检查了反汇编器中的c++ dll,我可以看到一个Diu作为导出的符号。
。关于设置界面,我错过了什么?
当你得到这个错误时:HRESULT: 0x8007000B
是由平台不兼容引起的。
检查您的编译器配置文件是否设置为相同的平台(x86
, x64
或AnyCPU
)。