使用静态SFML库时无法链接我的项目

时间:2017-01-18 18:15:45

标签: c++ visual-studio linker sfml portability

我正在尝试使用静态SFML库在Visual Studio中构建项目。

我设置了所有相应的链接器设置并且它可以工作:我可以构建一个在我的机器上的任何地方运行的可执行文件。但是,我的朋友无法运行它:他们没有 msvcp140.dll 。我不想用可执行文件打包额外的DLL,也不希望它们在他们的机器上安装额外的运行时库。

所以我假设我需要使用“多线程\ MT”设置构建项目(与“多线程DLL \ MD”设置相反)

但切换到该选项会导致SFML库出现多个链接器错误,例如:

LNK2038:检测到'RuntimeLibrary'不匹配:值'MD_DynamicRelease'与Program.obj中的值'MT_StaticRelease'不匹配

我确定我正在使用静态SFML库并且它们已正确链接,但我无法切换到\ MT设置以实现完全可移植性。事实上,使用库的动态版本允许\ MT设置 - 这显然是无用的,因为现在SFML没有静态链接。的建议吗

1 个答案:

答案 0 :(得分:1)

你走在正确的轨道上,你只需要使用一个使用相同运行时的SFML版本(或者自己构建)。否则,链接器会检测到不匹配。

调用CMake时,只需将变量SFML_USE_STATIC_STD_LIBS设置为TRUE,例如通过在构建目录中运行cmake -DSFML_USE_STATIC_STD_LIBS=TRUE .来获取SFML。然后像往常一样建立。

相关问题