C++创建动态链接库并在C#中调用教程
C++创建动态链接库并在C#中调用教程
想要学习如何在C++中创建动态链接库(DLL)并在C#中使用它吗?本教程将为您提供详细的步骤和代码示例,帮助您轻松掌握。
步骤1:创建C++ DLL
首先,使用C++编写包含所需功能的代码。以下是一个包含三个简单函数的示例:cpp// dll.cpp
#include
// 1. 简单功能函数extern 'C' __declspec(dllexport) int Add(int a, int b) { return a + b;}
// 2. 简单功能函数extern 'C' __declspec(dllexport) int Subtract(int a, int b) { return a - b;}
// 3. 简单功能函数extern 'C' __declspec(dllexport) void Greet(const char* name) { std::cout << 'Hello, ' << name << '!' << std::endl;}
将代码保存为 dll.cpp。
步骤2:编译动态链接库
使用C++编译器将代码编译成DLL文件。以Windows系统上的MinGW编译器为例:bashg++ -shared -o mydll.dll dll.cpp
这将生成名为 mydll.dll 的动态链接库文件。
步骤3:在C#中调用DLL
创建一个新的C#项目,并添加对 mydll.dll 的引用。然后,使用 DllImport 属性声明要调用的函数:csharp// Program.cs
using System;using System.Runtime.InteropServices;
class Program{ // 1. 简单功能函数的声明 [DllImport('mydll.dll')] public static extern int Add(int a, int b);
// 2. 简单功能函数的声明 [DllImport('mydll.dll')] public static extern int Subtract(int a, int b);
// 3. 简单功能函数的声明 [DllImport('mydll.dll', CharSet = CharSet.Unicode)] public static extern void Greet(string name);
static void Main() { int result = Add(5, 3); Console.WriteLine('Addition: ' + result);
result = Subtract(5, 3); Console.WriteLine('Subtraction: ' + result);
Greet('Alice'); }}
将代码保存为 Program.cs。
步骤4:编译和运行C#项目
使用C#编译器编译并运行项目。bashdotnet new consoledotnet add package System.Runtime.InteropServicesdotnet run
程序将调用DLL中的函数并输出结果。
注意: 确保DLL文件和C#项目位于同一目录下,或者在代码中指定正确的路径。
希望本教程对您有所帮助!如果您有任何问题,请随时提出。
原文地址: https://www.cveoy.top/t/topic/RuH 著作权归作者所有。请勿转载和采集!