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

问题描述 投票:0回答:1

Edit

有人指出我应该使用MS VC ++而不是MinGW,这似乎给我带来了不同的问题:

2个未解析的外部符号

  1. __imp_SetWindowsHookExW
  2. __imp_UnhookWindowsHookEx

如下所示:

这些中的每一个都跟踪到WinUser.h:

我应该为此做一个全新的帖子吗? - 或修改当前的帖子?


原帖:

我正在尝试使用vJoy中的库重新构建一个将鼠标输入映射到“Virtual Joy Stick”的程序

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

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


以下是编译警告和错误的当前列表:

据我所知,列出的每个“未定义的引用”都是一个可以追溯到“vJoyInterface.h”的函数,它包含在“MainWindow.cpp”文件中,其中发生了“未定义的引用”。

MainWindow.cpp #includes (image)

以下是“vJoyInterface.h”文件中称为“未定义”的函数的“原型”:

vJoyInterface Header (image)


因此,至少功能的“原型”存在 - 虽然功能可能仍未定义 - 我见过的其他答案说项目需要以某种方式包含/链接包含功能定义的相应库。

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

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

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


TL;DR

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

Qt Project Linking vJoyInterface (image)

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


Questions

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

Additional Information

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

c++ qt qt-creator virtual joystick
1个回答
0
投票

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

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

这是新的代码行:

项目文件代码(图片)

之后我做了“全部清理”,“运行Qmake”和“全部重建”,如下图所示:

步骤(图像)

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

© www.soinside.com 2019 - 2024. All rights reserved.