2012-01-24 21 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。

它工作。