大型dll编译手册

大型C++的dll项目编译手册

小型dll项目编译在微软的教程里写的很清楚演练:创建和使用自己的动态链接库 (C++) | Microsoft Learn。但是编译引用了许多cpp文件或者lua脚本或其他dll的大型dll项目却无从下手。

  1. 新建dll项目

    打开visual studio新建dll项目,进入后把当前头文件文件夹和源文件文件夹的所有文件移除
    在这里插入图片描述
    (dllmain.cpp文件是编译器默认编译dll入口函数,如果项目中没有dllmain.cpp函数则编译器会自动选择含有dll对外接口定义的.h和.cpp文件作为dll的入口函数编译)

  2. 设置输出环境

    设置编译输出为release(release编译的dll运行更快), x64(根据自己电脑型号选择x64还是x86)
    在这里插入图片描述

  3. 创建dll头文件

    头文件文件夹右键添加,选择新建项
    在这里插入图片描述

    输入头文件模板(具体入口函数根据设计自己定义,这里是插件dll的定义模板)

    #pragma once
    #include "xxx.h"
    #ifndef DLL_H_
    #define DLL_H_
    extern "C" _declspec(dllexport) void LoadActions(void);
    extern "C" _declspec(dllexport) void UnloadActions(void);
    #endif	
    
  4. 创建新的dll源文件,实现头文件里声明的入口函数

    #include "cryptoplugindll.h"
    #ifdef _WIN32
    #define DLLEXPORT extern "C" __declspec (dllexport)
    #else
    #define DLLEXPORT extern "C"
    #include <unistd.h>
    #endif
    
    DLLEXPORT void LoadActions(IServer* pServer)
    {
    	
    }
    
    DLLEXPORT void UnloadActions(void)
    {
    
    }
    
  5. 引用dll依赖的文件

    把入口函数依赖的.h文件和.cpp文件从现有项导入。导入后会发现dll入口源文件无法include新导入的文件,因为新导入的文件并不是把文件复制进此项目,而是一种类似隔离环境下引用的关系。
    在这里插入图片描述

​ 所以需要配置。在项目的属性,中的C++选项,里的附加包含目录导入现有项的工作目录。

在这里插入图片描述

  1. 取消头文件编译

    打开项目属性页,取消预编译头。

    在这里插入图片描述

7.确认引入所有依赖的文件后生成dll

在这里插入图片描述

​ 如果生成不成功根据报错继续引入或者删除文件,直到生成dll。生成的dll文件在\x64\Release文件夹下。

  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值