所以,我用C ++ / SFML完成了一个游戏,我想把它发送给某人,但是当我发送它时会出现错误:我在另一台计算机上测试了所需的SFML dll,它显示libstdc ++ - 6.dll丢失了,所以我添加了它,然后再试一次,它告诉我还有其他dll丢失了,这是非常尴尬的。我如何分享我的游戏没有所有的错误和缺失的DLL?
发布于 2019-06-14 16:57:18
您可以使用依赖沃克 (depends.exe)查找应用程序正在使用的所有dll-s。它仍然需要一些尝试和错误周期来发现您需要的,但至少您有一个地方可以开始。您很可能需要编译器提供的dll和正在使用的其他库的dll。您很可能不需要System32文件夹中的任何内容。
发布于 2019-06-19 15:32:53
如果计划部署SFML应用程序,建议静态构建项目。这还需要静态构建SFML。安装需要一些时间,但所有依赖项都将包含在可执行文件中,从而使应用程序更加可靠和易于安装。这个过程不应与静态链接到SFML混淆,静态构建SFML之后仍然需要这样做。
您将不得不克隆SFML存储库并使用生成visual studio项目的CMake,该生成visual studio项目的CMake将允许您静态地构建SFML,其中/MTd用于调试,/MT用于发布。这些选项可以在Project Properties > C/C++ > Code Generation > Runtime Library中找到。
发布于 2019-06-27 00:23:07
正如@aj.toulan所说,您需要静态地链接SFML。我假设您正在使用Visual在Windows上进行开发。当您下载和安装SFML时,它已经构建了静态库。
如果您正在使用任何外部库,则需要构建它们的静态版本!
您需要在项目属性中添加SFML_STATIC的预处理器定义。
现在,您需要包含静态库。无论是在项目中使用的SFML库,还是添加"-s“
注释(lib,"sfml-graphics-s.lib")
SFML使用openal32.lib,由于许可,需要在文件夹中使用DLL和exe。
#ifndef SFML_STATIC
#pragma comment(lib,"sfml-graphics-s.lib")
#pragma comment(lib,"freetype.lib")
#pragma comment(lib,"opengl32.lib")
#pragma comment(lib,"sfml-system-s.lib")
#pragma comment(lib,"winmm.lib")
#pragma comment(lib,"sfml-window-s.lib")
#pragma comment(lib,"gdi32")
#pragma comment(lib,"winmm")
#pragma comment(lib,"sfml-audio-s.lib")
#pragma comment(lib,"flac.lib")
#pragma comment(lib,"ogg.lib")
#pragma comment(lib,"vorbisenc.lib")
#pragma comment(lib,"vorbisfile.lib")
#pragma comment(lib,"vorbis.lib")
#pragma comment(lib,"openal32.lib")
#pragma comment(lib,"sfml-main.lib")
#pragma comment(lib,"sfml-network-s.lib")
#pragma comment(lib,"ws2_32.lib")
#pragma comment(lib,"openal32.lib")
//include below line if you want to hide console window
#pragma comment(linker, "/SUBSYSTEM:windows /ENTRY:mainCRTStartup")
#endif // !SFML_STATIChttps://stackoverflow.com/questions/56602222
复制相似问题