【问题标题】:Build shared library with static library使用静态库构建共享库
【发布时间】:2017-05-23 17:24:31
【问题描述】:

假设我有一个源代码,并且我将它编译为一个静态库,所以我有一个 .lib 文件。让我们称之为 first.lib

然后我有其他源代码正在调用以前代码中的函数。我将此代码构建为共享库,并将 first.lib 作为链接器的输入。现在我有一个 second.lib, second.dll

到目前为止,一切顺利。 但我想创建一个 EXE 应用程序,它也使用 second.dll 和 first.lib。在构建应用程序时,我链接到 second.dll 并将 first.lib 作为链接器的输入。

我的应用程序是否包含两次 first.lib 的内容?就我而言,它似乎确实如此。

【问题讨论】:

    标签: c++ windows dll shared lib


    【解决方案1】:

    我的应用程序是否包含两次 first.lib 的内容?

    答案是“有点”。

    当您链接静态库时,您并没有将所有库包含在 DLL 或可执行文件中,而只是包含您实际使用的部分。

    因此,静态库的一部分在 DLL 中,库的一部分在可执行文件中,并且库的一部分可能在两者中。

    【讨论】:

    • 您能提出任何避免重复的想法吗?
    • 将 first.lib 包装在 first.dll 中,并同时拥有 second.dll 和针对它的可执行链接。但是,在 Windows 上,您必须处理从 first.lib 导出所有符号。
    猜你喜欢
    • 2017-12-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多