Qt-导入第三方库

本文介绍如何在Qt项目中显式导入第三方库ControlCAN。通过将ControlCAN.h和ControlCAN.lib文件放置到工程目录,并将ControlCAN.dll放入debug和release文件夹中,再通过.pro文件进行配置,即可轻松调用API函数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


  Qt提供了显式和隐式导入第三方库方法,本文只介绍显示导入方法。

  第三方提供的库文件包括ControlCAN.h,ControlCAN.dll和ControlCAN.lib。将ControlCAN.h和ControlCAN.lib放入当前工程目录(其他任何位置均可),ControlCAN.dll文件放在debug和release文件夹中。

  打开.pro文件,右键,选择“添加库”:

在弹出的对话框中选择“”“外部库”

添加ControlCAN.lib

可以在.pro文件中看到上述图中的代码。

 

包含头文件“”ControlCAN.h“”,可以调用库中的API函数,如下代码:

 1 void MainWindow::on_openCanBtn_clicked()
 2 {
 3     if(VCI_OpenDevice(21,0,0)!=STATUS_OK)
 4         {
 5            qDebug("open Error");
 6             return;
 7         }
 8        int baud = 393223;
 9     if (VCI_SetReference(21,0, 0, 0, &baud) != STATUS_OK)
10         {
11           qDebug("set reference error");
12             VCI_CloseDevice(21,0);
13             return;
14         }
15 
16     VCI_INIT_CONFIG init_config;
17         init_config.Mode = 0;
18 
19         if(VCI_InitCAN(21,0,0,&init_config)!=STATUS_OK)
20         {
21            qDebug("Init Error");
22             VCI_CloseDevice(21,0);
23             return;
24         }
25 
26         ui->startCanBtn->setEnabled(true);
27 }

 

上述API调用比使用QLibrary的代码更少更方便。

 

### 如何在 Qt 项目中添加和配置第三方库文件夹 #### 使用 CMake 配置第三方库 为了在 Qt 项目中成功导入并使用第三方库,通常会采用构建工具如 CMake 来管理这些依赖关系。对于基于 CMake 的项目,在 `CMakeLists.txt` 文件内指定第三方库的位置至关重要。 通过命令 `include_directories()` 可以告知编译器去哪里寻找所需的头文件[^3]: ```cmake include_directories(D:/DEMO/3rd/opencv-3.0/include) ``` 这行代码的作用是指定包含路径为 D:\DEMO\3rd\opencv-3.0\include 下的所有 .h 或其他形式的头文件。 同样重要的是设置链接目录以便于链接阶段能够找到对应的 `.lib` 文件(Windows 平台下),这是通过调用 `link_directories()` 实现的: ```cmake link_directories(D:/DEMO/3rd/opencv-3.0/lib) ``` 上述指令告诉链接器去查找位于给定位置下的静态或共享库(.lib),从而完成程序与所需功能模块之间的连接工作。 #### 设置目标属性 除了定义全局性的包含和链接路径外,还可以更精确地为目标设定特定资源。比如当创建了一个名为 myTarget 的可执行文件或者库时,可以这样操作: ```cmake target_include_directories(myTarget PRIVATE ${PROJECT_SOURCE_DIR}/path/to/thirdparty/includes) target_link_libraries(myTarget PRIVATE path::to::thirdparty::libs) ``` 这里利用了 target_ 开头的一系列函数来专门处理单个项目的具体需求,其中PRIVATE表示该信息仅限于此目标内部可见;如果希望子工程也能继承,则应选用PUBLIC选项。 #### 处理不同类型的库 考虑到可能存在多种类型的库——既可能是静态也可能是动态加载的形式,因此还需要注意区分 debug 和 release 版本间的差异。一般情况下,开发者会在不同的环境中分别提供两种版本的库文件,并确保应用程序能够在适当的时候选择正确的版本进行编译和运行[^2]。 例如,可以在 CMake 中根据当前构建模式自动切换使用的库文件: ```cmake if(CMAKE_BUILD_TYPE MATCHES Debug) set(LIB_NAME "library_debug_version") else() set(LIB_NAME "library_release_version") endif() add_executable(${EXECUTABLE_NAME} main.cpp) target_link_libraries(${EXECUTABLE_NAME} ${LIB_NAME}) ``` 这段脚本展示了如何依据构建类型匹配相应的库名称来进行链接。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值