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

时间:2017-12-26 23:32:55

标签: c++ qt qt-creator virtual joystick

修改

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

2个未解析的外部符号

  1. __ imp_SetWindowsHookExW
  2. __ imp_UnhookWindowsHookEx
  3. 如下所示: image1

    其中每一个都在这里追溯到 WinUser.h

    img2

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

    原帖:

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

    中的库将鼠标输入映射到“Virtual Joy Stick”

    可以在此处找到原始项目MouseToJoystick

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

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

    Qt Creator Errors (*image*)

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

    Project **Directory** Structure (*image*)

    MainWindow.cpp #includes (image)

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

    vJoyInterface Header (image)

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

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

    vJoyLib folder Libraries (*image*)

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

    Qt Project Linking vJoyInterface (*image*)

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

    TL; DR

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

    Qt Project Linking vJoyInterface (image)

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

    问题

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

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

1 个答案:

答案 0 :(得分:0)

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

在项目编译设置中从 MinGW 切换到 MS VC ++ 后,我在我的" MouseToJoystick.pro "文件。

以下是新的代码行:

项目文件代码(图像

之后我做了#34;全部清洁","运行Qmake"和"重建所有"如图所示:

步骤(图像

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