【问题标题】:How to make Clang on Windows link against different runtimes如何使 Clang on Windows 链接到不同的运行时
【发布时间】:2017-02-10 11:12:51
【问题描述】:

在尝试用 C++ 构建个人项目时,我遇到了一个问题。我不确定它何时表现出来,因为我通常在 Linux 环境中处理该项目,但希望该项目在 Windows 上运行。

不幸的是,我正在使用的编译器 Clang 开始向我抛出以下错误:

libboost_filesystem-vc140-mt-1_61.lib(operations.obj) : error LNK2038: mismatch detected for 'RuntimeLibrary': value 'MD_DynamicRelease' doesn't match value 'MT_StaticRelease' in buffer.obj

问题是我不知道如何告诉 Clang 底层编译器应该使用哪个运行时,如果我不需要,我现在不想使用 clang-cl

使 Windows 上的 Clang 链接到动态运行时的正确方法是什么?

【问题讨论】:

    标签: c++ windows runtime clang clang++


    【解决方案1】:

    我不确定我所做的哪一部分阻止了链接器的抱怨,但在我的构建脚本中,我指定了 -D_MT -D_DLL 作为我的编译器和链接器选项的两个选项,对于我的链接器,我必须禁用默认库(-Xlinker /NODEFAULTLIB) 并手动指定要链接的运行时版本(在我的例子中,-lmsvcrt -lucrt -lmsvcprt -lvcruntime)。这两个更改似乎已经停止了所有链接和编译错误。

    【讨论】:

    • _MT = 多线程,_DLL = 动态链接运行时。这些编译标志需要与您链接的库相匹配。
    猜你喜欢
    • 2017-06-10
    • 2012-10-07
    • 2021-12-03
    • 1970-01-01
    • 1970-01-01
    • 2013-04-06
    • 1970-01-01
    • 2013-08-31
    • 1970-01-01
    相关资源
    最近更新 更多