4
cl -MT -DSFML_STATIC main.cpp freetype.lib gdi32.lib glew.lib jpeg.lib openal32.lib opengl32.lib sfml-audio-s.lib sfml-graphics-s.lib sfml-network-s.lib sfml-system-s.lib sfml-window-s.lib sndfile.lib winmm.lib

结果是:

sfml-graphics-s.lib<Color.cpp.obj> : error LNK2038: mismatch detected for 'RuntimeLibrary': value 'MD_DynamicRelease' doesn't match value 'MT_StaticRelease' in main.obj

如何指定 RuntimeLibrary?

4

2 回答 2

1

如果您在项目设置中选择 MT_StaticRelease,则您使用的任何库也必须使用此参数。不幸的是,SFML 是使用 MD_DynamicRelease(最常见和最安全的选择)编译的,就像 /lib 中的 eXpl0it3r 库一样。然而,eXpl0it3r 也提供了使用 MT_StaticRelease 编译的 SFML 库

另外我需要链接 user32.lib 和 advapi32.lib

cl -EHsc -FC -Zi -MT -DSFML_STATIC main.cpp advapi32.lib freetype.lib gdi32.lib glew.lib jpeg.lib openal32.lib opengl32.lib sfml-audio-s.lib sfml-graphics-s.lib sfml-network-s.lib sfml-system-s.lib sfml-window-s.lib sndfile.lib user32.lib winmm.lib
于 2015-01-21T06:43:06.423 回答
1

您可能需要运行时库的多线程、动态、发布版本。使用 /MD 标志。有关控制要链接的运行时库版本的标志的更多信息,请参见此处。

问题是 sfml-graphics-s.lib 链接到运行时库的多线程、动态、发布版本,而您的命令行指示链接到该库的多线程、静态、发布版本(您正在使用 / MT 开关)。将 /MT 替换为 /MD 即可解决冲突。

于 2015-01-21T06:42:54.097 回答