使用 CLion 将 C++ 编译为 64 位

Compile C++ as 64Bit with CLion

我有一个运行内存消耗算法的 C++ 应用程序。

它崩溃并出现错误:在分配的内存达到约 2GB 后抛出 'std::bad_alloc' 的实例后调用终止。

我想将它编译为 64 位,以便它可以从我的 64 位/8GB Ram 机器上分配更多内存。

如何实现?

我正在使用 CLion,使用 CMake 构建并使用 mingw 版本: mingw-w64\i686-4.8.3-posix-dwarf-rt_v3-rev2 顺便说一句 - wingw 安装在 C:\Program Files (x86)\mingw-w64 下,这与问题有关吗?

我一直在看这里: Detecting 64bit compile in C 并且(不出所料)我可以看到我的应用程序没有 __x86_64__

您必须告诉 CLion 使用 MinGW-w64 来构建您的 CMake 项目。

您不必更改您的 CMake 项目配置。如果您可以轻松地告诉您的编译器要为哪种架构构建或使用适当的编译器 (MinGW-w64),那么通过固定的机器架构限制您的 CMake 项目将适得其反。

这篇 post 向您展示了如何做到这一点:

https://dev.my-gate.net/2014/09/15/how-to-use-mingw-w64-with-clion/

摘自此post:

Here are the few steps to make it work:

  1. Get your MinGW-w64 compiler installed somewhere.
  2. Create a file with the path [MinGW-w64 dir]/include/_mingw.h and the content shown below.
  3. Point CLion to your [MinGW-w64 dir] and watch how CLion recognizes your MinGW setup.

构建可执行文件后,您可以使用 unix 命令 file 检查其体系结构,因为您使用的是 mingw,所以应该可以使用它。

按照 OP 的建议,发表我的评论作为答案:为此你需要将 -m64 选项传递给 compiler/linker。