【问题标题】:How to compile C/C++ programs to a exe format如何将 C/C++ 程序编译为 exe 格式
【发布时间】:2014-02-22 00:18:20
【问题描述】:

我使用的是 mac OS X 10.8.4 64 位。 我想在我的 mac 上构建一些 C/C++ 程序,然后将它们展示给一些使用 windows 的人。 我可以成功地将它编译成一个exe,使用

终端上的g++ test.cpp -o test.exe

但是当在我的电脑上运行时,该 exe 文件会引发此错误:“此文件的此版本与您正在运行的 Windows 版本不兼容。检查您计算机的系统信息以查看您是否需要 x86 (32 -bit) 或 x64 (64-bit) 版本的程序。” 注意:我的电脑也是 64 位的

【问题讨论】:

  • 如果您在 OS X 上运行该命令,您所做的只是给文件名一个“.exe”结尾。您需要为 Windows 实际编译它,这需要您在 OS X 上设置交叉编译或在 Windows 上设置编译器。
  • 最简单的方法可能是在虚拟机上安装 Windows(使用 VirtualBox,或者,VMware Fusion,或者...)并获取Visual Studio Express 的副本。

标签: c++ c windows macos compilation


【解决方案1】:

使用g++ test.cpp -o test.exe 不会生成Windows EXE 可执行文件,它只会生成Mac OS X 可执行文件,该文件的文件名中恰好有.exe 扩展名。要生成 Windows EXE 可执行文件,您需要使用 Windows 编译器,例如 Microsoft Visual Studio 或 cygwin 上的 gcc。

【讨论】:

  • 好的,谢谢,但这是否意味着无法从 mac 创建 C/C++ 可执行 windows 文件?
  • 是的,有。您将使用例如 MinGW 进行交叉编译
  • 不,这是可能的,但它涉及的内容比您可能想要的要多得多。它需要交叉编译(使用单独的构建和目标环境编译某些东西)。这对于像嵌入式平台这样更棘手的目标来说是相对常见的,但在 Mac OS X 和 Windows 之间,它要么从未完成,要么几乎从未完成。至少我从未听说有人这样做。
  • 没有听说过桌面的交叉编译。它实际上并不能让你不必拥有,例如一台 Windows 机器(因为您需要测试),但它只允许您拥有一台构建机器。
猜你喜欢
  • 2018-07-30
  • 1970-01-01
  • 2018-05-10
  • 2011-01-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多