【问题标题】:How to build standalone SDL project with visual C++?如何使用 Visual C++ 构建独立的 SDL 项目?
【发布时间】:2013-08-24 04:50:08
【问题描述】:

我正准备今晚进入 Ludum Dare,我感到非常沮丧,因为我无法将我的项目构建成独立的 .exe。

我觉得这个问题至少被问了 100 次,但我找到的答案都没有帮助我...我真的不明白什么是静态链接或如何做到这一点,并且这似乎不是我问题的解决方案;我不介意我是否要与我的程序一起发送一堆 .dll 文件,我只是希望程序能够自行运行,以便我可以在比赛结束时提交它。

基本上,我的 Visual Studio (2010 Express) 配置完全遵循 LazyFoo's tutorial on setting it up。当我从 Visual Studio 启动程序时,在调试和发布配置上一切都运行良好,但是当我导航到项目的 Debug 或 Release 文件夹并尝试运行 .exe 时,程序中断并出现关于 abort() 的错误调用,或者他们给我错误“X程序已停止工作。”

我将我的所有 DLL 都包含在与放置可执行文件相同的文件夹中,并且游戏在 VS 中运行得非常好,但我似乎无法弄清楚如何将其编译为独立的.exe(甚至包括一个充满 dll 的文件夹)而不会分崩离析。

有人可以给我一个非常精确的方法来让它工作吗?任何帮助都会很棒。

【问题讨论】:

  • 简直疯了,同一个来源的微软 dll 至少可以有六个不兼容的派生(还有更多吗?)。
  • @DieterLücking:嗯,它被称为“DLL 地狱”是有原因的......

标签: c++ visual-studio-2010 exe


【解决方案1】:

如果您有一个 EXE,那么您的程序正在编译。最有可能在调试模式下,程序使用特定目录作为当前工作目录 (CWD) 运行,但是当您作为独立运行它时,CWD 是不同的。

CWD 会影响可加载的 DLL 以及使用相对路径(即不以 [反] 斜杠开头)的任何文件的搜索。这可能是你的问题:纹理、图形、配置文件、字体......

我的建议是在调试运行(有一个选项)中将 CWD 设置为与 EXE 完全相同,这是运行 EXE 时的默认设置。然后你就可以调试你的崩溃了。

【讨论】:

  • 啊,谢谢。我觉得很傻,我没有将我的资产添加到构建 EXE 的目录中,所以我的问题只是图像没有正确加载。感谢您的帮助!
猜你喜欢
  • 2012-02-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-26
  • 2010-10-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多