C++如何生成dll文件?
什么是DLL文件?它的应用场景?它为什么存在?
参考资料:Unity与 DLL文件 ☀️| 什么是DLL✨?
创建动态链接库工程&导出
- 创建工程
开发工具:Visual Studio 2017
- 创建头文件&源文件
#pragma once // 只允许include一次
extern "C" __declspec(dllexport) int add(int a, int b);
#pragma once的作用?参考:#pragma once的作用是什么?
为什么需要extern “C”?参考:C++动态加载dll与extern "C"解析
__declspec(dllexport)含义,参考: __declspec(dllexport)含义
#include "test.h"
int add(int a, int b)
{
return a + b;
}
#include<>和#include""的区别,参考:#include<>和#include""的区别
- 导出
设置工程属性,如下图所示
点击运行,即可获取dll文件(F:\Projects\C++\Dll_Test\Debug\Dll_Test.dll)
C#如何调用dll文件?
创建C#工程及调用
- 创建工程
开发工具:Visual Studio 2017
- 编写脚本文件
首先,将Dll_Test.dll文件添加到路径(F:\Projects\C#\DllMake\DllMake\bin\Debug)中。
namespace DllMake
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine(dllMake.add(5, 5));
Console.ReadKey();
}
public class dllMake
{
[DllImport("Dll_Test")] // 导入dll文件
public static extern int add(int a, int b);
// public不是必要的。static必须,因为随类一起加载,而不是实例化时。extern必须,这说明是调用外部函数,而不是在指定的命名空间中。
}
}
}
- 点击运行,即可看到结果
至此,恭喜你已经学会简单使用C++工程生成dll文件并且在C#工程中调用该dll文件了!!!