多个未定义的引用 - Qt Creator - vJoy C++

Multiple Undefined References - Qt Creator - vJoy C++

编辑

有人指出我应该使用 MS VC++ 而不是 MinGW,这似乎是结果对我来说是另一个问题:

2 个未解析的外部符号

  1. __imp_SetWindowsHookExW
  2. __imp_UnhookWindowsHookEx

如下所示:

这里的每一个都可以追溯到 WinUser.h

我应该为此制作全新的 post 吗? - 或修改当前的 post?


原文Post:

我正在尝试重新构建一个程序,使用来自vJoy

原始项目可以在这里找到:MouseToJoystick

我没有更改程序中的任何内容,我正在尝试使用 QT 5.10.0QT Creator 中编译它- 我不确定 "Build Settings" 设置是否正确。


这是当前的编译列表警告和错误

据我所知,列出的每个 "undefined references" 都是一个可以追溯到 "vJoyInterface.h"[ 的函数=125=] 包含在文件 "MainWindow.cpp" 中,其中 "undefined references" 发生。

MainWindow.cpp #includes (image)

这里是 "prototypes" 函数 "undefined" 在 "vJoyInterface.h" 文件中:

vJoyInterface Header (image)


因此,至少存在函数的 "prototypes" - 尽管函数可能仍未定义 - 我看到的其他答案说项目需要以某种方式 include/link 包含函数定义的适当库。

唯一与 vJoy 相关的其他文件位于“vJoyLib/64”和“vJoyLib/32”文件夹。其中都包含这些文件:

此库在“MouseToJoystick.pro”文件中引用,如下所示:

我的假设是 vJoy 函数在“vJoyInterface.lib”中的某处定义,但我不知道,我也不知道如何检查。


TL;DR

QT Creator 说有 "undefined references" 但我知道原型已被 包含 ,我认为它们是在链接到项目的库中定义,如下图所示:

Qt Project Linking vJoyInterface (image)

但老实说,我不知道函数实际定义在哪里,或者库是否正确链接。


问题

  1. 如何找出函数的实际定义位置如何在我的项目中正确包含library/definitions?
  2. 为什么每个函数在错误消息的开头都添加了'_imp__'?

附加信息

Qt Creator - Project Build Settings - Qt 5.10.0 MinGW 32 位

@AlexanderVX 在对我的问题的评论中提供了这个答案

在项目编译设置中从MinGW切换到MS VC++后,我添加了1行代码到我的“MouseToJoystick.pro”文件。

这是新的代码行:

项目文件代码(图片

之后我做了 "Clean All"、"Run Qmake" 和 "Rebuild All",如下图所示:

步数(图片

程序编译运行完美,谢谢@AlexanderVX