私は C++ プログラミングと Qt に比較的慣れていないため、この問題はおそらく共依存関係の理解不足です。ソース コード内で Xinput.h ファイルを使用しようとしています。これは、DirectX SDK with Qt クリエーターの一部です。Visual Studio 2008 内で正常にコンパイルおよび実行されるソリューションの作業ソース コードがありますが、Qt 内でそれを使用するようになると、ヘッダー ファイルが欠落することはありません。組み込みのライブラリ加算器を使用して XInput.dll をインポートしようとしました
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」がこのスコープで宣言されていませんでした。これを修正する方法を知っている人はいますか?
_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
);
何が起こっているのかわからない人のためにデモを含めると思いました:
QT の .Pro ファイル:
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")
そしてそれは動作しますか?