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

问题描述 投票:0回答:1

我正在使用标记为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编译器标志,但没有改变。

我在做什么错,以及如何解决此问题?

c++ g++ mingw-w64
1个回答
2
投票

long在64位可执行文件中不能保证为64位。实际上,on Windows, long is always 32 bits under both x86 and x64。如果需要64位整数,请使用longlong long__int64。如果仅想检查可执行文件是针对32位还是64位编译的,请改用int64_t

© www.soinside.com 2019 - 2024. All rights reserved.