我正在尝试使用静态SFML库在Visual Studio中构建项目。
我设置了所有相应的链接器设置并且它可以工作:我可以构建一个在我的机器上的任何地方运行的可执行文件。但是,我的朋友无法运行它:他们没有 msvcp140.dll 。我不想用可执行文件打包额外的DLL,也不希望它们在他们的机器上安装额外的运行时库。
所以我假设我需要使用“多线程\ MT”设置构建项目(与“多线程DLL \ MD”设置相反)
但切换到该选项会导致SFML库出现多个链接器错误,例如:
LNK2038:检测到'RuntimeLibrary'不匹配:值'MD_DynamicRelease'与Program.obj中的值'MT_StaticRelease'不匹配
我确定我正在使用静态SFML库并且它们已正确链接,但我无法切换到\ MT设置以实现完全可移植性。事实上,使用库的动态版本允许\ MT设置 - 这显然是无用的,因为现在SFML没有静态链接。的建议吗
答案 0 :(得分:1)
你走在正确的轨道上,你只需要使用一个使用相同运行时的SFML版本(或者自己构建)。否则,链接器会检测到不匹配。
调用CMake时,只需将变量SFML_USE_STATIC_STD_LIBS
设置为TRUE
,例如通过在构建目录中运行cmake -DSFML_USE_STATIC_STD_LIBS=TRUE .
来获取SFML。然后像往常一样建立。