【问题标题】:Build Visual C++ static library with static standard lib使用静态标准库构建 Visual C++ 静态库
【发布时间】:2013-01-28 00:44:32
【问题描述】:

我有一个依赖于标准库的 C++ 静态库。如果我选择将标准库链接为 DLL,则构建 OK。 但是,如果我将它链接为 LIB,我就会遇到问题。我的库是指静态标准库,我的 EXE 是指标准库和 MFC,我收到“函数 XXX 已定义”的错误消息(这里 XXX 表示任何标准库函数,如 operator new、free、malloc 等)。 所以,看起来我的静态 C++ 库不仅导出了它自己的函数,还导出了标准库函数,并且它们被导入到 C++ 程序中两次。 有没有办法解决这个问题并创建使用静态标准库的静态库?

【问题讨论】:

  • 请粘贴您声明这些函数的方式。
  • 如果您是关于标准库函数,我使用标准 C/C++ 包含指令,例如 #include 或 #include
  • 您能否稍微更具体地了解一些错误消息(如在您的问题中发布它们(不在评论中)?只需 3-5应该足够了。

标签: c++ windows visual-studio visual-c++


【解决方案1】:

您的静态库包含标准库的完整副本,您将两者静态链接在一起。显然,将该库链接到您的应用程序会导致重复符号。也许静态链接应用程序可以解决这个问题,因为链接器可能会丢弃标准库的这些重复副本,但我认为这不适用于 MFC。将您的静态库与 DLL 标准库链接起来,这听起来可能有些矛盾,但实际上并非如此。

【讨论】:

    猜你喜欢
    • 2018-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多