我有一个运行耗费内存的算法的c ++应用程序。
它崩溃并出现错误:在分配的内存达到大约2GB后抛出' std :: bad_alloc' 的实例后调用。
我想将其编译为64Bit,以便它可以从我的64Bit / 8GB Ram机器中分配更多内存。
怎么做?
我正在与CLion合作,使用CMake构建并使用mingw版本:
的的mingw-W64 \ i686-4.8.3-POSIX的矮rt_v3-REV2
顺便说一下 - wingw安装在C:\Program Files (x86)\mingw-w64
下这与问题有关吗?
我一直在这里看:
Detecting 64bit compile in C
(并不令人惊讶)我可以看到我的应用程序没有__x86_64__
答案 0 :(得分:3)
你必须告诉CLion使用MinGW-w64来构建你的CMake项目。
您无需更改CMake项目配置。如果您可以轻松地告诉编译器要构建哪个体系结构或使用适当的编译器(MinGW-w64
),那么通过固定的机器体系结构限制CMake项目会适得其反。
这篇文章向您展示了如何做到这一点:
https://dev.my-gate.net/2014/09/15/how-to-use-mingw-w64-with-clion/
摘自这篇文章:
以下是使其运作的几个步骤:
构建可执行文件后,您可以使用unix命令file
检查其体系结构,因为您使用mingw应该可以使用它。
答案 1 :(得分:3)
根据OP的建议,将我的评论作为答案发布:为此,您需要将-m64选项传递给编译器/链接器。