【问题标题】:Visual Studio 2010 C++ SDL game works on the computer it was compiled on, but not on any otherVisual Studio 2010 C++ SDL 游戏可以在编译它的计算机上运行,​​但不能在任何其他计算机上运行
【发布时间】:2011-09-19 18:13:52
【问题描述】:

我已经使用 SDL 和 Visual Studio 2010 在 C++ 中编写了一个 noughts and crosss 游戏。我已经在 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 文件夹中,但程序没有提取它。谁能看看是什么原因造成的?

【问题讨论】:

  • 吹毛求疵:不是结,而是零或可能零。
  • 哈哈谢谢,更新了! :P @NemanjaTrifunovic 尝试将构建模式更改为 MT,但我在 msvcrt.lib 文件中遇到了一堆链接错误:/

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


【解决方案1】:

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

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

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

【讨论】:

  • 实际上,使用 Visual C++ 2010,运行时库的 xcopy 部署应该可以再次工作。
  • 安装 x86 版本解决了我朋友电脑上的问题,忘记添加几个带有标准 sdl.dll 和 sdl_image.dll 的额外 dll 文件。谢谢
【解决方案2】:

这可能是识别您忘记随程序提供哪些库的最有用的工具:

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

【讨论】:

    【解决方案3】:

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

    【讨论】:

      【解决方案4】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-11-26
        • 1970-01-01
        • 1970-01-01
        • 2010-10-18
        • 2023-03-19
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多