Skip to content

c++如何开发dll动态链接库

约 1105 字大约 4 分钟

cppdllc++

2025-08-23

创建dll项目

1、打开 MicroSoft Visual Studio 2022,点击【创建新项目】。

创建新项目

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

选择动态链接库

3、配置项目名称和位置

配置新项目.png

保持空项目并不用预编译

生成下解决方案

选择上方栏目【生成(B)】菜单,选择第一个【生成解决方案(B)】

生成解决方案.png

删除自带的框架文件

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

删除这些框架文件.png

设置不用预编译

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

不使用预编译头.png

编写头文件(.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、填写文件名

创建cpp文件

编写函数功能

在创建的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)】

生成解决方案.png

成功生成提示

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

成功生成dll文件.png

如何找到dll文件?

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

dll生成目录提示.png

找到了dll文件.png

如何让调用的方法名与源码中的函数名一致

使用 .def 模块定义文件

这是强制指定导出名称的最标准方法,它能确保导出的名字和你写的名字完全一致,完全忽略编译器的修饰规则。

  1. 在你的 C++ 工程(VS)中,右键点击项目 -> 添加 -> 新建项 -> 选择 模块定义文件 (.def)。

  2. 将文件命名为 dllmain.def (或任意名字)。

  3. 在文件中写入以下内容:

    LIBRARY "你的dll名称"
    EXPORTS
        ; 格式:  函数名        @序号
        OpenFileDlg   @1
        SaveFileDlg   @2
        GetVersion    @3

如何在c#项目中调用dll

现在我们已经开发编译好我们需要的功能函数dll文件,那么怎么在c#项目中调用dll中的方法呢?

详细请查看:c#中如何调用cpp的dll文件

本博客采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可