pepsi_dl 2024-05-31 17:48 采纳率: 66.7%
浏览 49
已结题

基于QT的USBCAN二次开发

没加接口函数前

img


加了接口函数后,显示“mainwindow.obj:-1: error: LNK2019: 无法解析的外部符号 _VCI_OpenDevice@12,该符号在函数 "private: void __thiscall MainWindow::on_pushButton_clicked(void)" (?on_pushButton_clicked@MainWindow@@AAEXXZ) 中被引用”

img


构建套件是

img

源目录下添加了库函数,.pro文件里面也添加了lib的路径

img

img

  • 写回答

2条回答 默认 最新

  • 阿里嘎多学长 2024-05-31 17:48
    关注

    以下内容由CHATGPT及阿里嘎多学长共同生成、有用望采纳:


    从您提供的信息来看,您在基于Qt进行USBCAN的二次开发时遇到了链接错误,具体是_VCI_OpenDevice@12这个符号无法解析。这个问题通常是由于链接器无法找到该符号的定义导致的。以下是一些可能的解决方案和建议:

    1. 确认库文件是否正确链接

      • 确保ControlCAN.lib文件已经被正确添加到项目中,并且路径正确无误。
      • .pro文件中,您需要确保库文件的路径被正确指定。例如,如果库文件位于项目目录的lib子文件夹中,您的.pro文件应该包含类似以下内容:
        LIBS += -L$$PWD/lib -lControlCAN
        
        这里-L指定了库文件的路径,-l指定了库的名称(不包括前缀lib和后缀.lib)。
    2. 确认头文件是否包含

      • 确保ControlCAN.h已经被包含在需要使用该接口的源文件中。通常,这会在mainwindow.hmainwindow.cpp中通过#include "ControlCAN.h"来实现。
    3. 检查符号名称

      • 确认_VCI_OpenDevice@12是正确的符号名称,并且确实存在于ControlCAN.lib中。有时候,符号名称前后的下划线可能是由于命名空间或宏定义导致的,需要仔细检查。
    4. 确认构建配置

      • 检查您的构建套件(Kit)配置是否正确。您提供的构建套件配置显示为Desktop Qt 5.13.2 MSVC2017 32bit,确保这是您想要使用的配置,并且与您的开发环境匹配。
    5. 清理和重建项目

      • 在Qt Creator中,尝试清理(Clean)项目,然后重新构建(Rebuild)。这可以解决一些由于旧的构建文件导致的链接问题。
    6. 检查依赖关系

      • 检查.pro文件中的INCLUDEPATHDEPENDPATH变量是否正确设置,确保编译器能够找到所有必要的头文件。
    7. 使用Qt的调试工具

      • 使用Qt Creator内置的调试工具来检查链接过程中的错误和警告信息,这可能会提供更多关于问题的线索。
    8. 参考资料

    如果上述步骤都无法解决问题,您可能需要提供更多的代码和项目配置信息,以便进一步分析问题所在。同时,您也可以考虑联系库的提供者或在相关的开发社区寻求帮助。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 6月11日
  • 已采纳回答 6月3日
  • 创建了问题 5月31日

悬赏问题

  • ¥100 需要跳转番茄畅听app的adb命令
  • ¥50 寻找一位有逆向游戏盾sdk 应用程序经验的技术
  • ¥15 请问有用MZmine处理 “Waters SYNAPT G2-Si QTOF质谱仪在MSE模式下采集的非靶向数据” 的分析教程吗
  • ¥50 opencv4nodejs 如何安装
  • ¥15 adb push异常 adb: error: 1409-byte write failed: Invalid argument
  • ¥15 nginx反向代理获取ip,java获取真实ip
  • ¥15 eda:门禁系统设计
  • ¥50 如何使用js去调用vscode-js-debugger的方法去调试网页
  • ¥15 376.1电表主站通信协议下发指令全被否认问题
  • ¥15 物体双站RCS和其组成阵列后的双站RCS关系验证