cpp exe 文件在 wsl 上工作但不在 windows10 cmd 上工作

cpp exe file working on wsl but not working on windows10 cmd

我使用命令 g++ main.cpp foo.cpp 在 WSL 中使用 g++ 创建了一个可执行文件,并且在 WSL 环境中工作正常。

但是,在 windows 10,命令行中,当我尝试执行文件时,它说 程序无法启动或 运行 由于与 64 位不兼容Windows. [不支持的 16 位应用程序]

的版本

所以,问题是“如何在 WSL 中使用 g++ 构建 64 位或 32 位可执行文件。” 目前,我想我得到的是 16 位版本。

WSL 是一个 Linux 层,其 gcc 将生成 Linux 个可执行文件。 运行 他们通过 WSL 当然会工作,但如果你尝试 运行 他们在普通 Windows 将 Windows 对你耸耸肩。

如果你想从 Linux 编译 Windows 可执行文件,你需要使用 gcc 多目标,基本上使用 Windows gcc 版本编译在 Linux.

问题与 16 位代码无关,这只是 Windows 对您提供的奇怪可执行文件的最佳猜测。

我会说可执行文件的文件格式在 Linux 和 Windows 中是不同的,所以你不能拿走你在 Linux 中构建的东西(即在 WSL 中) , 运行 它在 Windows.

可执行文件格式存在各种 OS 特定的东西,这使得它们不兼容,甚至在您开始与 OS 和编译器的标准库进行交互之前。