如何使Windows上的Clang链接不同的运行时

时间:2016-10-02 10:01:07

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

在尝试使用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上链接动态运行时的正确方法是什么?

1 个答案:

答案 0 :(得分:4)

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