2010-08-01 52 views
0

我使用Visual Studio 2010 Express在C++ + SFML中编写了一个游戏。我打包了像msvcr100.dll,opengl32.dll等所有库,但一些人可以运行我的游戏,而其他人不能:/我不知道为什么,因为我添加了运行游戏所需的所有东西。无法运行游戏的人会看到以下消息:“程序入口点_ftol2无法位于动态链接库msvcrt.dll中”我的程序无法在朋友的机器上工作

如何让此游戏在所有机器上运行?

+1

请添加确切的错误消息。这也有助于澄清你如何“将所有图书馆打包”到你的游戏中。 – 2010-08-01 22:25:01

回答

1

看来你的朋友没有像你一样的msvcrt.dll。他们应该安装具有所有库的VC 2010可再发行组件包,或者可以将您的游戏与标准运行时库静态链接。

你可以得到再发行组件包here (x86 version)

+0

但我将这些DLL添加到包 – gamer43 2010-08-01 22:29:20

+0

您可以像我说的那样静态链接库。这样所需的功能将被链接到exe文件中。 – Jaka 2010-08-01 22:38:00

6

请不要复制的DLL。使用Visual Studio 2010 Redistributable Package。如果你想使这个更简单,使用一些工具可以让你做一个安装项目。 Visual Studio Professional有一个简单易用的安装向导创建器。

+0

但是,如果我的朋友不太了解计算机,并且不想安装Visual Studio 2010 Redistributable Package,他只想从我下载包并运行游戏,我该怎么办? – gamer43 2010-08-01 22:33:02

+1

然后你应该为他做一个安装程序。 Microsoft为VS2010运行时提供了一个Windows Installer合并模块,该模块可以集成到也包含您的游戏的基于MSI的安装程序中。 – 2010-08-01 22:35:23

+2

您可以随时链接到C++库。转到项目>属性...> C/C++>代码生成并将运行时库的值更改为“多线程(/ MT)”。这样就不需要安装任何可再分发程序。 – user353297 2010-08-01 22:50:07

1

请修改您的帖子以包含REAL错误信息 - 否则,人们将开始猜测游戏,并且无法为您提供与您的帖子中包含所有必要信息一样好的答案。

错误消息可能是

“过程入口点_ftol2 不能设在动态 链接库MSVCRT.DLL”

...这很可能意味着你提供了msvcrt.dll的错误版本,并且可以运行应用程序的人偶然安装了正确的版本。为了解决这个问题,提供正确的版本。

0

我发现问题,我把我的opengl32.dll加到这个包中。我认为opengl32.dll在一些系统上工作不同,所以当我删除这个库时,每个人都可以运行我的程序

相关问题