【问题标题】:How to add function to export table from static library?如何添加从静态库导出表的功能?
【发布时间】:2021-07-19 15:52:16
【问题描述】:

假设我们有test.dll,它实际上由几个静态库foo.libbar.lib 组成(它们是用c/c++ 编写的,由msvc 生成并具有pe/coff 格式)。 我想将foo.libbar.lib 的函数添加到test.dll 的导出表中。导出函数的一种方法是declspec(dllexport) 说明符。但不幸的是,它不适用于静态库(因为目标文件不能有 .edata 部分并动态链接)。编译和链接后我们有test.dll,它根本不导出函数。我该如何解决这个难题?

我做了一些研究,发现使用def 文件可以解决这个问题。但据我了解,我应该从foo.libbar.lib 手动获取损坏的函数名称列表并将列表插入到 def 文件中。这对我来说似乎很难,也许有更好的解决方案?

【问题讨论】:

    标签: c++ windows dll dynamic-linking portable-executable


    【解决方案1】:

    有一个关于从 DLL 重新生成 DEF 文件的very similar question。由于dumpbin 也理解 .LIB 文件,因此最佳答案也应该适合您。

    这是一个自动化的过程,因此它会导出所有内容,甚至是不必要的内容。

    【讨论】:

    • dumpbin 如何从 lib 中找到导出的函数?目标文件没有 edata 部分 - 我怀疑这种方式是否可行(我会检查它)
    • @LmTinyToon:.lib 在导出函数和非导出函数之间没有区别,所以这个问题没有任何意义。 dumpbin 找到所有函数,这就是为什么我警告这个方法会找到然后导出所有函数
    猜你喜欢
    • 2020-03-19
    • 2010-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-20
    • 1970-01-01
    • 1970-01-01
    • 2020-09-08
    相关资源
    最近更新 更多