VS2013 c++ 生成和调用DLL动态链接库 转载 https://blog.csdn.net/zhunianguo/article/details/52294339
创建动态库方法:
创建动态库是生成 .dll .lib 两个个文件
文件 -> 新建 -> 项目 -> win32控制台应用程序 项目名称:DLLGenerator
应用程序类型:DLL 附加选项:空项目

建立源文件dllgenerator.cpp(不需要主函数,只写你需要动态调用的函数)
- // 整数加法和乘法
- int Add(int a, int b){
- return a + b;
- }
- int Mul(int c, int d){
- return c * d;
- }
建立头文dllgenerator.h(一定要把函数声明写好)
- int Add(int, int);
- int Mul(int, int);
建立源文件dllmain.cpp(一定要包含#include<windows.h>)
- 下面的函数是VS2013自动生成,没生成复制即可。其实是在创建工程项目时不选空项目时候vs自动生成的,但不选空项目会产生很多其他文件和依赖项,本文教你建立最纯净的工程,注意包含window.h
- // dllmain.cpp : 定义 DLL 应用程序的入口点。
- #include <windows.h>
- BOOL APIENTRY DllMain(HMODULE hModule,
- DWORD ul_reason_for_call,
- LPVOID lpReserved
- )
- {
- switch (ul_reason_for_call)
- {
- case DLL_PROCESS_ATTACH:
- case DLL_THREAD_ATTACH:
- case DLL_THREAD_DETACH:
- case DLL_PROCESS_DETACH:
- break;
- }
- return TRUE;
- }
建立源文件Source.def
- 建立方式如下图,选择 VisualC++ -> 模块定义文件(.def)
- 在此文件第一行引号中填你的项目名称即可,EXPORTS下面列出要生成的函数名称 格式:“名称 @序号”)
- LIBRARY "DLLGenerator"
- EXPORTS
- Add @1
- Mul @2
点击菜单栏 生成 -> 生成解决方案 或者 按Ctrl+F5
输出栏显示 创建库 DLLGenerator.lib 和 生成 DLLGenerator.dll

lib文件里面有对dll文件的描述,所以生成的dll文件不要改名称,否则lib文件和dll文件无法对应
在项目方案目录里,Debug文件夹中可以找到DLLGenerator.lib 和 DLLGenerator.dll, 把这两个文件和工程的头文件(dllgenerator.h)移动到一个空文件夹(E:\dlltest\DLL)中,以后你的项目用到此dll就包含这个目录,至此动态库创建完毕。

项目调用动态库方法如下:
调用动态库是调用 .dll .lib .h 三个文件
文件 -> 新建 -> 项目 -> win32控制台应用程序 项目名称:DLLTestor
应用程序类型:控制台应用程序 附加选项:空项目

打开项目 -> 项目属性 -> 配置属性 -> VC++目录 -> 包含目录 加入DLLGenerator.h所在目录的绝对路径 (E:\dlltest\DLL),以分号间隔
打开项目 -> 项目属性 -> 配置属性 -> VC++目录 -> 库目录 加入DLLGenerator.lib所在目录的绝对路径 (E:\dlltest\DLL)

打开项目 -> 项目属性 -> 配置属性 -> 链接器 -> 输入 -> 附加依赖项 中填上DLLGenerator.lib(以分号间隔), 点击右下角 应用 确定
工程调用dll时首先在工程文件目录中查找dll,找不到后在C:\Windows\System32 中找。所以我们自己项目简单调用dll时就把生成的dll文件复制到工程目录中,如果经常用可以把dll文件放到C:\Windows\System32中
新建源文件main.cpp
- #include<iostream>
- #include"dllgenerator.h"
- using namespace std;
- int main(){
- int a = 2;
- int b = 3;
- cout << Add(a, b) << endl;
- cout << Mul(a, b) << endl;
- }
点击菜单栏,调试 -> 开始执行(不调试) 或者按F5
运行结果:

至此调用动态库成功。
一花独放不是春,百花齐放春满园!
让机器视觉应用满天下,解放人类的眼睛和大脑!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律