多个未定义的引用 - Qt Creator - vJoy C++
Multiple Undefined References - Qt Creator - vJoy C++
编辑
有人指出我应该使用 MS VC++ 而不是 MinGW,这似乎是结果对我来说是另一个问题:
2 个未解析的外部符号
- __imp_SetWindowsHookExW
- __imp_UnhookWindowsHookEx
如下所示:
这里的每一个都可以追溯到 WinUser.h:
我应该为此制作全新的 post 吗? - 或修改当前的 post?
原文Post:
我正在尝试重新构建一个程序,使用来自vJoy
原始项目可以在这里找到:MouseToJoystick
我没有更改程序中的任何内容,我正在尝试使用 QT 5.10.0 在 QT Creator 中编译它- 我不确定 "Build Settings" 设置是否正确。
这是当前的编译列表警告和错误:
据我所知,列出的每个 "undefined references" 都是一个可以追溯到 "vJoyInterface.h"[ 的函数=125=] 包含在文件 "MainWindow.cpp" 中,其中 "undefined references" 发生。
MainWindow.cpp #includes (image)
这里是 "prototypes" 函数 "undefined" 在 "vJoyInterface.h" 文件中:
因此,至少存在函数的 "prototypes" - 尽管函数可能仍未定义 - 我看到的其他答案说项目需要以某种方式 include/link 包含函数定义的适当库。
唯一与 vJoy 相关的其他文件位于“vJoyLib/64”和“vJoyLib/32”文件夹。其中都包含这些文件:
此库在“MouseToJoystick.pro”文件中引用,如下所示:
我的假设是 vJoy 函数在“vJoyInterface.lib”中的某处定义,但我不知道,我也不知道如何检查。
TL;DR
QT Creator 说有 "undefined references" 但我知道原型已被 包含 ,我认为它们是在链接到项目的库中定义,如下图所示:
Qt Project Linking vJoyInterface (image)
但老实说,我不知道函数实际定义在哪里,或者库是否正确链接。
问题
- 如何找出函数的实际定义位置或如何在我的项目中正确包含library/definitions?
- 为什么每个函数在错误消息的开头都添加了'_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
编辑
有人指出我应该使用 MS VC++ 而不是 MinGW,这似乎是结果对我来说是另一个问题:
2 个未解析的外部符号
- __imp_SetWindowsHookExW
- __imp_UnhookWindowsHookEx
如下所示:
这里的每一个都可以追溯到 WinUser.h:
我应该为此制作全新的 post 吗? - 或修改当前的 post?
原文Post:
我正在尝试重新构建一个程序,使用来自vJoy
原始项目可以在这里找到:MouseToJoystick
我没有更改程序中的任何内容,我正在尝试使用 QT 5.10.0 在 QT Creator 中编译它- 我不确定 "Build Settings" 设置是否正确。
这是当前的编译列表警告和错误:
据我所知,列出的每个 "undefined references" 都是一个可以追溯到 "vJoyInterface.h"[ 的函数=125=] 包含在文件 "MainWindow.cpp" 中,其中 "undefined references" 发生。
MainWindow.cpp #includes (image)
这里是 "prototypes" 函数 "undefined" 在 "vJoyInterface.h" 文件中:
因此,至少存在函数的 "prototypes" - 尽管函数可能仍未定义 - 我看到的其他答案说项目需要以某种方式 include/link 包含函数定义的适当库。
唯一与 vJoy 相关的其他文件位于“vJoyLib/64”和“vJoyLib/32”文件夹。其中都包含这些文件:
此库在“MouseToJoystick.pro”文件中引用,如下所示:
我的假设是 vJoy 函数在“vJoyInterface.lib”中的某处定义,但我不知道,我也不知道如何检查。
TL;DR
QT Creator 说有 "undefined references" 但我知道原型已被 包含 ,我认为它们是在链接到项目的库中定义,如下图所示:
Qt Project Linking vJoyInterface (image)
但老实说,我不知道函数实际定义在哪里,或者库是否正确链接。
问题
- 如何找出函数的实际定义位置或如何在我的项目中正确包含library/definitions?
- 为什么每个函数在错误消息的开头都添加了'_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