2013-01-22 87 views
0

我试图使用GetNativeSystemInfo api来获取操作系统的体系结构(如果它是32位或64位操作系统),但是当我尝试编译我得到的代码时此错误:'GetNativeSystemInfo'未在此范围内声明,我的代码有什么问题?如何在Qt控制台应用程序中使用GetNativeSystemInfo

#include <QtCore/QCoreApplication> 
#include <QDebug> 
#include <windows.h> 

int main(int argc, char *argv[]) 
{ 
    QCoreApplication a(argc, argv); 

    _SYSTEM_INFO sysinfo; 
    GetNativeSystemInfo(&sysinfo); 
    if (sysinfo.wProcessorArchitecture == PROCESSOR_ARCHITECTURE_INTEL) 
    { 
     qDebug() << "win32"; 
    } 
    if (sysinfo.wProcessorArchitecture == PROCESSOR_ARCHITECTURE_AMD64) 
    { 
     qDebug() << "win64"; 
    } 

    return a.exec(); 
} 
+0

这并不直接回答你的问题,但你可以在[QtGlobal](http://qt-project.org/doc/qt-4.8/qtglobal.html)或[QSysInfo]中的函数中找到宏。 (http://qt-project.org/doc/qt-4.8/qsysinfo.html)有帮助。 – cgmb

+0

您能否提供一个示例代码来获取使用QtGlobal或QSysinfo的系统架构? – user1576869

+0

其实,仔细观察,Qt并没有提供与您正在寻找的信息完全相同的信息。抱歉。 – cgmb

回答

3

编译_WIN32_WINNT定义为0x0501或以上。

要么#define _WIN32_WINNT 0x0501,要么使用适当的编译器选项(对于msvc,使用/D_WIN32_WINNT=0x0501)。

查看更多关于Using the Windows Headers (MSDN)

+0

将#define _WIN32_WINNT 0x0501添加到我的代码后,我得到一些错误:警告:“_WIN32_WINNT”重新定义,并且'GetNativeSystemInfo'未在此范围内声明 – user1576869

+0

我忘了说,这个'#define'应该是全部' #include's。 –

+0

谢谢,现在它可以工作,您的答案是非常有帮助的。 – user1576869

相关问题