外观
c++如何开发dll动态链接库
创建dll项目
1、打开 MicroSoft Visual Studio 2022,点击【创建新项目】。

2、直接在搜索框搜索dll,找到【动态链接库(DLL)】(c++、windows、库)

3、配置项目名称和位置

保持空项目并不用预编译
生成下解决方案
选择上方栏目【生成(B)】菜单,选择第一个【生成解决方案(B)】

删除自带的框架文件
我这里不用创建项目的时候自带的框架文件,所以删除。

设置不用预编译
因为我们删除了框架文件,那么要设置下不使用预编译头。项目上右键—属性—展开(c/c++)—选择【预编译头】,然后在下拉菜单中选择不使用预编译头,如下图:

编写头文件(.h)
创建头文件
1、在项目上右键,选择【添加】—【新建项】—【添加新项】
2、选择【头文件(.h)】类型
3、填写头文件名

编写头文件内容
在创建的demo.h头文件中,我们来编写内容,如下
#pragma once
#ifdef DEMO_EXPORTS // DEMO是你项目名大写,
#define DEMO_API __declspec(dllexport) // DEMO_API是自己填写的,一般是大写
#else
#define DEMO_API __declspec(dllimport) // DEMO_API是自己填写的,一般是大写
#endif
// 导出这个函数,格式: extern "C" DEMO_API 函数声明 ,DEMO_API及时上面自己填写的那个
extern "C" {
DEMO_API int Sum(int a, int b);
}
// 如果有多个函数就参考上方代码加入下面就行编写功能源文件(.cpp)
创建cpp源文件
1、在项目上右键,选择【添加】—【新建项】—【添加新项】
2、选择【c++文件(.cpp)】类型
3、填写文件名

编写函数功能
在创建的demo.cpp文件中,编写刚刚的函数功能,要在头部导入刚刚的头文件 demo.h,如下图
#include "demo.h" // 导入刚刚编写的头文件
// 编写刚刚在头文件demo.h里声明的名称为Sum的返回值为int的函数
extern "C" {
int Sum(int a, int b) {
return a + b; // 这个就是一个简单的两个整数相加的函数
}
}生成解决方案编译成dll文件
生成下解决方案
选择上方栏目【生成(B)】菜单,选择第一个【生成解决方案(B)】

成功生成提示
如按照上面操作,那么你应该成功生成解决方案,然后我们可以到生成目录里面找到demo.dll(项目名.dll)

如何找到dll文件?
在VS界面中的下方,刚刚的生成解决方案提示了,在项目中按照路径去寻找。如下图:


如何让调用的方法名与源码中的函数名一致
使用 .def 模块定义文件
这是强制指定导出名称的最标准方法,它能确保导出的名字和你写的名字完全一致,完全忽略编译器的修饰规则。
在你的 C++ 工程(VS)中,右键点击项目 -> 添加 -> 新建项 -> 选择 模块定义文件 (.def)。
将文件命名为 dllmain.def (或任意名字)。
在文件中写入以下内容:
LIBRARY "你的dll名称" EXPORTS ; 格式: 函数名 @序号 OpenFileDlg @1 SaveFileDlg @2 GetVersion @3
如何在c#项目中调用dll
现在我们已经开发编译好我们需要的功能函数dll文件,那么怎么在c#项目中调用dll中的方法呢?
详细请查看:c#中如何调用cpp的dll文件
