在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進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。