2013-01-22 86 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

相關問題