【问题标题】:SDL apps don't run on other computersSDL 应用程序无法在其他计算机上运行
【发布时间】:2012-09-30 06:45:27
【问题描述】:

我刚刚使用 SDL 1.2.15 和 SDL_image 1.2.12 库用 C++ 编写了一个应用程序。它可以在我的计算机上运行,​​但是每当我将 *.exe 发送给我的朋友(当然还有来自 SDL 库和程序所需图像的所有 *.dll 文件)时,他们都会说没有任何反应(没有消息、没有错误等)。程序的内容无关紧要,因为我编写的每个 SDL 应用程序都会产生这样的问题。

我正在 Windows XP 上开发 Code::Blocks 10.05(作为我的朋友)。显然我已经发送了发布版本。

我发现我的程序无法在与 Windows NT 及更低版本的兼容模式下运行。

【问题讨论】:

  • 你在编译的时候有没有和你的exe在同一目录下的sdl dll文件?
  • 不,它们与 cpp 文件在同一目录中。
  • 它不是在所有朋友的 PC 上都可以使用,还是只在其中几台上工作?
  • 我并没有在我所有朋友的电脑上都试过,但它并没有在我试过的所有电脑上工作。
  • 你可能应该在本地虚拟机上安装一些“干净”的 Windows 安装,然后尝试解决它..

标签: c++ windows sdl codeblocks


【解决方案1】:

如果应用程序似乎没有启动,您可以使用DependencyWalker 检查是否所有静态依赖项都已满足。它会告诉你是否有任何丢失的 dll。如果所有依赖项似乎都已满足(dll 列表中没有错误),您可以使用主菜单中的Profile 命令来分析应用程序的启动。

如果动态依赖(通过 COM 加载的 dll 或对 LoadLibrary 的显式调用)存在任何问题,分析将显示您。

【讨论】:

    【解决方案2】:

    好的,我刚刚发现了我的错误。我确定了我的 SDL_Surface(使用 SDL_SetVideoMode())的宽度和高度以适合我的屏幕尺寸。当函数想要在屏幕上对其他维度执行相同操作时,它返回 NULL 从而使所有应用程序崩溃。 谢谢关心。

    【讨论】:

      猜你喜欢
      • 2013-08-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-07
      • 2013-08-30
      • 1970-01-01
      • 2018-04-25
      • 2012-01-29
      相关资源
      最近更新 更多