我使用Visual Studio 2010 Express在C++ + SFML中编写了一个游戏。我打包了像msvcr100.dll,opengl32.dll等所有库,但一些人可以运行我的游戏,而其他人不能:/我不知道为什么,因为我添加了运行游戏所需的所有东西。无法运行游戏的人会看到以下消息:“程序入口点_ftol2无法位于动态链接库msvcrt.dll中”我的程序无法在朋友的机器上工作
如何让此游戏在所有机器上运行?
我使用Visual Studio 2010 Express在C++ + SFML中编写了一个游戏。我打包了像msvcr100.dll,opengl32.dll等所有库,但一些人可以运行我的游戏,而其他人不能:/我不知道为什么,因为我添加了运行游戏所需的所有东西。无法运行游戏的人会看到以下消息:“程序入口点_ftol2无法位于动态链接库msvcrt.dll中”我的程序无法在朋友的机器上工作
如何让此游戏在所有机器上运行?
看来你的朋友没有像你一样的msvcrt.dll。他们应该安装具有所有库的VC 2010可再发行组件包,或者可以将您的游戏与标准运行时库静态链接。
你可以得到再发行组件包here (x86 version)
请不要复制的DLL。使用Visual Studio 2010 Redistributable Package。如果你想使这个更简单,使用一些工具可以让你做一个安装项目。 Visual Studio Professional有一个简单易用的安装向导创建器。
但是,如果我的朋友不太了解计算机,并且不想安装Visual Studio 2010 Redistributable Package,他只想从我下载包并运行游戏,我该怎么办? – gamer43 2010-08-01 22:33:02
然后你应该为他做一个安装程序。 Microsoft为VS2010运行时提供了一个Windows Installer合并模块,该模块可以集成到也包含您的游戏的基于MSI的安装程序中。 – 2010-08-01 22:35:23
您可以随时链接到C++库。转到项目>属性...> C/C++>代码生成并将运行时库的值更改为“多线程(/ MT)”。这样就不需要安装任何可再分发程序。 – user353297 2010-08-01 22:50:07
请修改您的帖子以包含REAL错误信息 - 否则,人们将开始猜测游戏,并且无法为您提供与您的帖子中包含所有必要信息一样好的答案。
错误消息可能是
“过程入口点_ftol2 不能设在动态 链接库MSVCRT.DLL”
...这很可能意味着你提供了msvcrt.dll的错误版本,并且可以运行应用程序的人偶然安装了正确的版本。为了解决这个问题,提供正确的版本。
我发现问题,我把我的opengl32.dll加到这个包中。我认为opengl32.dll在一些系统上工作不同,所以当我删除这个库时,每个人都可以运行我的程序
请添加确切的错误消息。这也有助于澄清你如何“将所有图书馆打包”到你的游戏中。 – 2010-08-01 22:25:01