2012-01-24 50 views
1

我對C++編程和Qt比較陌生,所以這個問題可能是我對代碼依賴的理解。我試圖在我的源代碼中使用Xinput.h文件,這是Qt創建者的DirectX SDK的一部分。 我有我的解決方案的工作源代碼,編譯並在Visual Studio 2008中很好地執行,但是當我在Qt中使用它時,沒有像缺少頭文件那樣。我曾嘗試使用內置的libary加法如何配置Qt - DirectX - Xinput.h

win32:CONFIG(release, debug|release): LIBS += -L$$PWD/../../../../../Program Files (x86)/Microsoft DirectX SDK (June 2010)/Lib/x64/ -lXInput 
else:win32:CONFIG(debug, debug|release): LIBS += -L$$PWD/../../../../../Program Files (x86)/Microsoft DirectX SDK (June 2010)/Lib/x64/ -lXInputd 
else:symbian: LIBS += -lXInput 
else:unix: LIBS += -L$$PWD/../../../../../Program Files (x86)/Microsoft DirectX SDK (June 2010)/Lib/x64/ -lXInput 

INCLUDEPATH += $$PWD/../../../../../Program Files (x86)/Microsoft DirectX SDK (June 2010)/Lib/x64 
DEPENDPATH += $$PWD/../../../../../Program Files (x86)/Microsoft DirectX SDK (June 2010)/Lib/x64 

然而,這無法編譯給我「_in」在此範圍內沒有宣佈導入XInput.dll,沒有任何一個知道我怎麼可能解決這一問題?

_in和_out錯誤來自Direct X SDK中包含的Xinput.h頭文件。

DWORD WINAPI XInputGetState 
(
    __in DWORD   dwUserIndex, // Index of the gamer associated with the device 
    __out XINPUT_STATE* pState  // Receives the current state 
); 

我想我應該爲任何人無法確定所發生的事情演示:

的.pro文件從QT:

QT + =核心

QT  -= gui 

TARGET = testxbox 
CONFIG += console 
CONFIG -= app_bundle 

TEMPLATE = app 


SOURCES += main.cpp 

    INCLUDEPATH += "...path to include file.../Include" 

win32: LIBS += -L$$PWD/../../../Program Files (x86)/Microsoft SDKs/Windows/v7.0A/Lib/ -lXinput 

INCLUDEPATH += $$PWD/../../../Program Files (x86)/Microsoft SDKs/Windows/v7.0A/Lib 
DEPENDPATH += $$PWD/../../../Program Files (x86)/Microsoft SDKs/Windows/v7.0A/Lib 

然後我只是嘗試在我的源文件中包含Xinput.h,並且我收到大量可怕的消息。 Windows VS 2008讓我來做

#include <windows.h> 
#include <XInput.h> 
#pragma comment(lib, "XInput.lib") 

它的工作原理?

+0

這裏'_in'從哪裏來?向我們展示處於問題核心的代碼。 – Bart

+0

我在主要評論的底部添加了一條額外的評論,感謝Bart。除了它的用途,恐怕我不知道更多。我還會指出,我檢查了可能需要的其他庫文件(甚至將它們全部添加進去),但沒有運氣。 – Nark

回答

0

我已經把xinput.lib在我的項目文件夾,並添加此行到.pro文件:

win32: LIBS += -lXInput 

,當然還有在代碼中添加的#include。

它工作。