Visual Studio 2010 C ++ SDL游戏可以在它编译的计算机上运行,​​但不能在任何其他计算机上运行

时间:2011-09-19 18:13:52

标签: c++ visual-studio-2010 visual-c++ sdl windows-7-x64

我已经使用SDL和Visual Studio 2010在C ++中编写了一个游戏和交叉游戏。我已经在Release中构建它并且如果我在我编译它的计算机上运行.exe它没有问题(Windows 7 64bit Home高级)。

我尝试在笔记本电脑上运行它(Windows 7 x86 Home premium),然后打开一个SDL窗口并立即关闭。我发现它在加载特定文件时崩溃,因此在初始化代码中添加了一个控制台输出,结果发现它找不到这个文件:

if((menuSurface = Surface::Load("gfx/menu.png")) == NULL){
        std::cout << "menu Did not load.";
        system("pause");
        return false;
    }

特别是这是加载的第二个文件,原始计算机可以找到它。

上面的问题已经解决了!我只是忘了添加sdl_image附带的额外.dll文件,如zlib1.dll,libpng12-0.dll等......第二个问题仍然存在。

此外,在我的朋友计算机上运行时,它会出现此错误

  

TestWin32.exe - 系统错误

     

程序无法启动,因为中缺少MSVCR100.dll   *电脑。尝试重新安装该程序以解决此问题。*

我将MSVCR100.dll文件包含在与.exe相同的文件夹中(以及SDl.dll和SDL_image.dll),仍然没有任何乐趣。该文件存在于他的SysWOW64文件夹中,但该程序没有将其提取。任何人都可以看到可能导致这种情况的原因吗?

4 个答案:

答案 0 :(得分:3)

第一个问题可能是资源不在正确位置的问题。

第二个问题是,使用新的Microsoft C运行时DLL,您不能只包含它,您需要为Visual Studio 2010部署适当的可再发行组件。

你可以找到(x86)here.如果你需要它还有一个单独的x64版本。

答案 1 :(得分:2)

这可能是确定您忘记在程序中附带哪些库的最有用的工具:

它最初包含在Windows SDK中,但该网站已更新版本。

答案 2 :(得分:1)

在目标计算机上安装microsoft vc ++ redist,在尝试复制msvcr100.dll/msvcp100.dll时遇到了麻烦。

答案 3 :(得分:0)

找出您的可执行文件在您的开发系统和其他系统上动态加载的DLL。

我怀疑正在加载一些不应该加载的DLL,例如库的DLL版本错误。