Я относительно новичок в программировании на C ++ и Qt, так что, вероятно, эта проблема - мое неправильное понимание зависимости кода. Я пытаюсь использовать файл Xinput.h в своем исходном коде, который является частью DirectX SDK с создателем 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 происходят из файла заголовка Xinput.h, включенного в Direct X SDK.
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 + = core
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")
и это работает?