【问题标题】:Linking boost static regex pulling in msvcprt在 msvcprt 中链接提升静态正则表达式
【发布时间】:2011-06-26 14:53:10
【问题描述】:

我正在编译我的应用程序 /MT 并链接到 boost -mt-s 库(多线程静态),但 boost 正则表达式库(1.45 版)似乎正在拉入 /MD msvcrt.lib,这会导致链接器错误。

我可以使用 /NODEFAULTLIB:msvcrt.lib 解决该问题,但我更愿意修复它。它是 boost 中的一个已知错误还是正在做一些愚蠢的事情?

相关链接器(/VERBOSE:lib)输出:

搜索 /boost/stage/lib\libboost_regex-vc100-mt-s-1_45.lib: 搜索 C:\Program Files\Microsoft Visual Studio 10.0\VC\LIB\msvcprt.lib:

已完成搜索库 链接:警告 LNK4098:defaultlib 'MSVCRT' 与使用其他库冲突;使用 /NODEFAULTLIB:library

【问题讨论】:

    标签: visual-c++ boost linker


    【解决方案1】:

    我通常是 C#/Dot Net 开发人员,但现在有一个本地 Windows C++ 项目,它必须链接到静态 Boost 库。虽然我更喜欢在整个应用程序中使用 dll/程序集(与安全相关),但另有规定。

    我也在使用 Visual Studio 2010,最初很难链接到静态增强库。我发现这样做的唯一方法是创建一个新的 Win 32 静态库来与 Boost 库进行互操作。

    【讨论】:

      【解决方案2】:

      简短的回答是永远不要使用多线程静态配置。较新版本的 Visual Studio 甚至不允许将此作为​​选项。

      【讨论】:

      • 可能是个好建议,虽然我正在使用 Visual Studio 2010 进行编译(哪个新版本甚至不允许静态链接?)
      猜你喜欢
      • 1970-01-01
      • 2013-04-06
      • 1970-01-01
      • 2011-05-31
      • 2011-01-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多