为了账号安全,请及时绑定邮箱和手机立即绑定

创建DLL时导出所有符号

创建DLL时导出所有符号

C++
桃花长相依 2019-10-28 10:59:01
使用VS2005,我想创建一个DLL并自动导出所有符号,而无需在各处添加__declspec(dllexport)且无需手动创建.def文件。请问这是一种方法吗?
查看完整描述

3 回答

?
慕虎7371278

TA贡献1802条经验 获得超4个赞

可以办到...


我们在这里做的方法是使用链接器的/ DEF选项来传递包含出口列表的“模块定义文件”。我从您的问题中了解到您了解这些文件。但是,我们不是手工完成的。导出列表本身是由dumpbin / LINKERMEMBER命令创建的,并通过简单的脚本将输出操纵为模块定义文件的格式。


设置需要很多工作,但是它允许我们编译在Windows上没有Unix的dllexport声明的情况下创建的代码。


查看完整回答
反对 回复 2019-10-28
?
繁星coding

TA贡献1797条经验 获得超4个赞

我编写了一个小程序来解析.lib文件中“ dumpbin / linkermember”的输出。我有超过8,000个函数引用要从一个DLL导出。

在DLL上执行此操作的问题在于,必须一次链接没有导出定义的DLL才能创建.lib文件,然后生成.def,这意味着您现在必须再次将DLL与.def文件重新链接为实际导出参考。

使用静态库更容易。将所有源代码编译为静态库,运行dumbin,使用小程序生成.def,然后在导出名称可用的情况下将库链接到DLL中。

不幸的是,我的公司不允许我向您显示来源。所涉及的工作是识别def文件中转储输出中不需要哪些“公共符号”。您必须丢弃很多引用,NULL_IMPORT_DESCRIPTOR,NULL_THUNK_DATA,__imp *等。


查看完整回答
反对 回复 2019-10-28
  • 3 回答
  • 0 关注
  • 1361 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信