繁体   English   中英

为什么 MinGW-w64 生成 32 位二进制文​​件?

[英]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__int64int64_t 如果您只想检查您的可执行文件是针对 32 位还是 64 位编译的,请改用sizeof(void*)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM