[英]Why does MinGW-w64 generate 32-bit binaries?
我正在使用标记为x86_64-8.1.0-posix-seh-rt_v6-rev0
的 MinGW-w64 版本。 运行g++ --version
,我看到:
g++.exe (x86_64-posix-seh-rev0, Built by MinGW-W64 project) 8.1.0
根据我的理解,这个版本的 g++ 应该默认生成 64 位二进制文件。
编译命令是这样的:
g++.exe -std=c++17 -g main.cpp -o main.exe
但是,如果main.cpp
看起来像这样:
#include <iostream>
int main() {
std::cout << sizeof(long);
return 0;
}
它打印4
而不是8
。 我尝试使用-m64
编译器标志,但没有任何改变。
我做错了什么,如何解决这个问题?
long
不能保证在 64 位可执行文件中的大小为 64 位。 实际上, 在 Windows 上, long
在 x86 和 x64 下始终为 32 位。 如果需要 64 位整数,请使用long long
或__int64
或int64_t
。 如果您只想检查您的可执行文件是针对 32 位还是 64 位编译的,请改用sizeof(void*)
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.