将 C++ 游戏部署到其他 windows 台机器

Deploy a c++ game to other windows machines

我使用以下库创建了一个 C++ 游戏:SDL2SDL2_MIXER。想把游戏送给一些没有编程经验的朋友一起玩。现在我真的不知道该怎么做。 我尝试过的是使用带有 visual studio 的 installshield 限量版。把安装程序给一些朋友后,他们都有一个共同的问题——错误是缺少一个dll MVCsomething。 向我的朋友提供该应用程序的最简单方法是什么?既然c++都翻译成汇编了,难道每次换机都要重新编译源码吗?

鉴于您标记问题的方式,目前尚不清楚您是使用 Visual Studio 还是 CodeBlocks 来编译代码。

我猜你是在 Visual Studio 中编译它,因此他们得到一个错误,说他们没有合适的 MSVCRT DLL——换句话说,您的代码所依赖的 C 运行time 库,已使用 Microsoft 的编译器进行编译。让他们下载与您在开发计算机上使用的 Visual Studio 版本相匹配的 Visual C++ Redistributable 版本。例如,如果您有 VS 2015,他们将需要安装 Visual C++ Redistributable for Visual Studio 2015.

或者,您可以将所需的可再发行组件捆绑到您的安装程序中,以确保它能够自动安装(如果尚未安装)。在 InstallShield 中,我相信这是通过将 VC++ Redistributable 标记为 "requirement" 来完成的。确保将其设置为先决条件。虽然,从 this question, it may be that InstallShield LE doesn't support this. If that's the case, my advice would be to ditch InstallShield altogether and use something like Inno Setup 的答案来看构建安装程序。学习曲线适中,但它是有用的知识。话虽如此,我无法相信 Microsoft 会提供一种机制来创建不支持自动安装 CRT 的 Visual Studio 安装程序。关于设置向导,我没有跟上 Visual Studio 现在支持的内容。

Since c++ is translated to assembly do I have to compile the source again each time I change a machine?

不,不。假设您的朋友都是 运行ning Windows(而不是 Linux)并且拥有基于 x86 的机器(如果他们 运行ning Windows),您的代码将正常工作。唯一的问题是,如果您在计算机上编译 运行 的 64 位代码,但它们只有 32 位计算机。然后你需要有 32 位和 64 位版本。 (或者一个 32 位版本,两者都 运行。)