c++生成嵌套dll的简单方式
By
admin
at 2 小时前 • 0人收藏 • 7人看过
目标: 生成一个 C.dll 内部调用A.dll , 这两个dll都由自己生成.
目的: a.dll作为基础函数, C.dll 是上层算法函数. 这样算法工程师和底层工程师可以同步进行. 算法隔离.
新建c++ 生成dll工程, 修改工程[目标文件名]=A

在属性[高级]里改输出调用约定=stdcall

代码生成里设置[运行库]=MT (将c++运行库集成到dll内)

新建 a.def 导出名称文件, 编写如下:

编译后, 在输出目录中找到 a.dll 和 a.lib文件, 复制到 C.dll工程里去

在C.dll 工程里添加 [资源文件]->[新增]->[a.lib],

在i项目管理里[头文件] 添加 a.H头文件

手动增加a.dll里面需要在c.dll内部使用的函数, 直接添加函数即可, 无需添加任何其他设置.

同样的设置C.dll工程属性, 然后编译导出dll即可.
1 个回复 | 最后更新于 2 小时前
登录后方可回帖
解释下:
工程里添加了.def 和 项目属性里设置了 stdcall 约定, 并不代表生成的 .lib 文件就是stdcall约定, lib内部的名字还是 @xxGetHand?@@ 这样的i形式 , 所以在c.dll工程里就需要将这个lib文件添加到[资源文件]里面去, 要不然会提示找不到函数.
.def文件 直接写 EXPORTS ..... , 不要增加 library "xxx" 这句话, 因为如果a.dll工程里你在属性里修改了导出dll的名字, a .lib 内部其实用的还是 原工程名 ,比如"xxxlib.dll" 这样的引用.