【发布时间】:2021-07-19 15:52:16
【问题描述】:
假设我们有test.dll,它实际上由几个静态库foo.lib、bar.lib 组成(它们是用c/c++ 编写的,由msvc 生成并具有pe/coff 格式)。
我想将foo.lib、bar.lib 的函数添加到test.dll 的导出表中。导出函数的一种方法是declspec(dllexport) 说明符。但不幸的是,它不适用于静态库(因为目标文件不能有 .edata 部分并动态链接)。编译和链接后我们有test.dll,它根本不导出函数。我该如何解决这个难题?
我做了一些研究,发现使用def 文件可以解决这个问题。但据我了解,我应该从foo.lib、bar.lib 手动获取损坏的函数名称列表并将列表插入到 def 文件中。这对我来说似乎很难,也许有更好的解决方案?
【问题讨论】:
标签: c++ windows dll dynamic-linking portable-executable