在C++中调用C#代码需要使用平台调用(Platform Invocation Services,简称P/Invoke)技术
MyCSharpLibrary.cs
的C#文件,内容如下:using System;
namespace MyCSharpLibrary
{
public class MyClass
{
public static int Add(int a, int b)
{
return a + b;
}
}
}
将这个文件编译成DLL:
csc /target:library MyCSharpLibrary.cs
这将生成一个名为MyCSharpLibrary.dll
的DLL文件。
在C++项目中引用这个DLL。将生成的MyCSharpLibrary.dll
文件放在C++项目的输出目录中(例如,与C++源代码文件相同的目录)。
在C++代码中使用P/Invoke调用C#方法。创建一个名为main.cpp
的C++文件,内容如下:
#include <iostream>
#include <windows.h>
// 声明C# DLL中的方法
extern "C" __declspec(dllexport) int MyCSharpAdd(int a, int b);
int main()
{
int result = MyCSharpAdd(3, 4);
std::cout << "The result is: " << result << std::endl;
return 0;
}
注意,我们使用extern "C"
来告诉C++编译器这个函数是用C语言的方式导出的,而不是C++的方式。这是因为C++支持函数重载,而C不支持,所以需要使用这种方式来避免名称修饰(name mangling)。
The result is: 7
。这就是在C++中调用C#代码的基本方法。请注意,这种方法可能存在一些限制,例如C#和C++之间的数据类型转换和内存管理。在实际项目中使用时,请确保了解这些限制。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。