当前位置: 首页 > news >正文

Win系统下配置PCL库第三步之链接库的路径(超详细)

完成了前面的所有下载以及编译的流程后,我们就需要去链接所有库的路径放在pri文件中,以供Qt直接查询对应的头文件。

1.创建.pri文件

在这个路径下打开window的指令框:

输入以下指令就会生成一个pri文件,该文件内容会有“null”。

echo "null" >1.pri //可以自己命名

首先需要链接库的头文件:这里需要修改为你的路径

我这里直接给出

INCLUDEPATH += D:/PCL/PCL/include/pcl-1.14
INCLUDEPATH += D:/PCL/PCL/3rdParty/Boost/include/boost-1_84
INCLUDEPATH += D:/PCL/PCL/3rdParty/Eigen3/include/eigen3
INCLUDEPATH += D:/PCL/PCL/3rdParty/FLANN/include
INCLUDEPATH += D:/PCL/PCL/3rdParty/OpenNI2/Include
# INCLUDEPATH += D:/PCL/PCL/3rdParty/VTK/include/vtk-9.1
INCLUDEPATH += D:/PCL/PCL/3rdParty/VTK/include/vtk-9.4

接下来是比较特殊的:同样的需要替换前面对应的路径。

win32:CONFIG(release, debug|release) {LIBS += -LD:/PCL/PCL/3rdParty/Qhull/lib/ -lqhull_r
} else:win32:CONFIG(debug, debug|release) {LIBS += -LD:/PCL/PCL/3rdParty/Qhull/lib/ -lqhull_rd
}

下面就是要链接一些lib文件夹的lib文件,这里的文件分为debug和release两个版本的,很好区分,debug后面的后缀一般都有d或者是-gd,所以这里肯定是用脚本生成,然后复制上去即可。

有了脚本就只需要将对应的lib路径复制过去,输出路径指定好,就能自动生成对应的文件。除了上面的PCL库的基础lib,还需要添加两个路径的lib文件。

Boost的lib以及VTK的lib

#!/usr/bin/env python3
# -*- coding: utf-8 -*-import osdef scan_libs(folder):"""扫描文件夹,返回  (release_list, debug_list)规则:文件名中带有 '-gd-' 视为 Debug,其余视为 Release"""release, debug = [], []for fname in os.listdir(folder):if not fname.lower().endswith('.lib'):continuefull = os.path.join(folder, fname).replace('\\', '/')base = fname[:-4].lower()  # 去掉 .libif base.endswith('-gd') or base.endswith('d'):debug.append(full)else:release.append(full)return sorted(release), sorted(debug)def generate_pri(release_libs, debug_libs, out_file):"""生成  .pri 文件内容"""content = []content.append('# Auto-generated by gen_lib_pri.py')content.append('')# Release 块content.append('win32:CONFIG(release, debug|release) {')for lib in release_libs:content.append(f'    LIBS += {lib}')content.append('}')content.append('')# Debug 块content.append('else:win32:CONFIG(debug, debug|release) {')for lib in debug_libs:content.append(f'    LIBS += {lib}')content.append('}')with open(out_file, 'w', encoding='utf-8') as f:f.write('\n'.join(content))def main():input_folder = r'D:\PCL\PCL\3rdParty\VTK\lib'output_file = r'C:\Users\admin\Desktop\result\Qhull.pri'if not os.path.isdir(input_folder):print('❌ Input folder does not exist.')returnrelease_libs, debug_libs = scan_libs(input_folder)generate_pri(release_libs, debug_libs, output_file)print(f'✅  Release: {len(release_libs)} 个')print(f'✅  Debug  : {len(debug_libs)} 个')print(f'📦  已保存 : {output_file}')if __name__ == '__main__':main()

这个脚本只需要更改input_folder以及output_file两个

2.总体测试

1.打开Qt,创建项目

这里可以自己选择路径

2.选择qmake

这里的勾选取消

这里需要我们勾选Visual studio 的编译器,勾选第二个。

首先需要移除工程里生成的头文件目录下的mainwindow.h,之后在.Pro中添加之前链接库路径的pri文件。

#include <QApplication>
#include <QSurfaceFormat>
#include <QTimer>
#include <QVTKOpenGLStereoWidget.h>
#include <vtkPointData.h>
#include <vtkPoints.h>
#include <vtkPolyData.h>
#include <vtkUnsignedCharArray.h>
#include <vtkSmartPointer.h>
#include <vtkGenericOpenGLRenderWindow.h>
#include <vtkRenderer.h>
#include <vtkRenderWindowInteractor.h>
#include <vtkVertexGlyphFilter.h>
#include <vtkPolyDataMapper.h>
#include <vtkActor.h>
#include <vtkPoints.h>
#include <vtkPolyData.h>
#include <vtkNamedColors.h>
#include <pcl/io/pcd_io.h>
#include <pcl/point_cloud.h>
#include <pcl/point_types.h>int main(int argc, char* argv[])
{QSurfaceFormat::setDefaultFormat(QVTKOpenGLStereoWidget::defaultFormat());QApplication app(argc, argv);// Qt WidgetQVTKOpenGLStereoWidget vtkWidget;vtkWidget.resize(800, 600);// VTK 渲染器和窗口auto renderWindow = vtkSmartPointer<vtkGenericOpenGLRenderWindow>::New();auto renderer = vtkSmartPointer<vtkRenderer>::New();renderWindow->AddRenderer(renderer);vtkWidget.setRenderWindow(renderWindow);// 加载点云pcl::PointCloud<pcl::PointXYZRGB>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZRGB>);if (pcl::io::loadPCDFile("D:\\PCL\\PCL\\2.pcd", *cloud) == -1)//更改自己的pcd文件{qWarning("Failed to load PCD file!");return -1;}// 转为 vtkPointsauto points = vtkSmartPointer<vtkPoints>::New();auto colors = vtkSmartPointer<vtkUnsignedCharArray>::New();colors->SetNumberOfComponents(3);for (auto& p : cloud->points){points->InsertNextPoint(p.x, p.y, p.z);unsigned char rgb[3] = {p.r, p.g, p.b};colors->InsertNextTypedTuple(rgb);}auto polyData = vtkSmartPointer<vtkPolyData>::New();polyData->SetPoints(points);polyData->GetPointData()->SetScalars(colors);auto glyphFilter = vtkSmartPointer<vtkVertexGlyphFilter>::New();glyphFilter->SetInputData(polyData);glyphFilter->Update();auto mapper = vtkSmartPointer<vtkPolyDataMapper>::New();mapper->SetInputConnection(glyphFilter->GetOutputPort());auto actor = vtkSmartPointer<vtkActor>::New();actor->SetMapper(mapper);renderer->AddActor(actor);renderer->SetBackground(0.1, 0.2, 0.3);renderer->ResetCamera();// 刷新窗口QTimer timer;QObject::connect(&timer, &QTimer::timeout, [&]() { renderWindow->Render(); });timer.start(30);vtkWidget.show();return app.exec();
}

需要更改路径为自己的PCD文件。

正常运行的话,到这一步,环境就配置完成了。


文章转载自:

http://iTWyrpN3.yqwsd.cn
http://UEMSa9PD.yqwsd.cn
http://VuzRe2TB.yqwsd.cn
http://oGsXVsti.yqwsd.cn
http://voiiKPzb.yqwsd.cn
http://gAP1Sqln.yqwsd.cn
http://5hLT4XCY.yqwsd.cn
http://NMrbDDBE.yqwsd.cn
http://k2pkGvpI.yqwsd.cn
http://0a74YIe2.yqwsd.cn
http://67kZezpc.yqwsd.cn
http://jqDlqaQc.yqwsd.cn
http://e7EGz5XB.yqwsd.cn
http://GqaJFu6g.yqwsd.cn
http://Posf64vn.yqwsd.cn
http://Xj2xOItt.yqwsd.cn
http://gelAi3jM.yqwsd.cn
http://V5TLyKnG.yqwsd.cn
http://uxoiywhe.yqwsd.cn
http://EIV7WFPW.yqwsd.cn
http://DNSGG4cj.yqwsd.cn
http://IPUXswQp.yqwsd.cn
http://8CYEXtJK.yqwsd.cn
http://q2aI0UHQ.yqwsd.cn
http://sVJPxt0Z.yqwsd.cn
http://OBmxg79o.yqwsd.cn
http://1Izi7y27.yqwsd.cn
http://3IjMfG4u.yqwsd.cn
http://NJFE2LdZ.yqwsd.cn
http://D20CvuCv.yqwsd.cn
http://www.dtcms.com/a/374739.html

相关文章:

  • 【远程运维】Linux 远程连接 Windows 好用的软件:MobaXterm 实战指南
  • Java入门级教程13-多线程同步安全机制synchronized(内置锁)、JavaMail发送电子邮箱、爬取CSDN到邮箱、备份数据库
  • 玩转Docker | 使用Docker部署KissLists任务管理工具
  • STL库——map/set(类函数学习)
  • STM32 串口接收数据包(自定义帧头帧尾)
  • 正向代理,反向代理,负载均衡还有nginx
  • 用户态与内核态的深度解析:安全、效率与优化之道
  • 搭建本地gitea服务器
  • ArcGIS JSAPI 高级教程 - 倾斜摄影数据开启透明(修改源码)
  • 输电线路分布式故障监测装置技术解析
  • 概率论第四讲—随机变量的数字特征
  • 学习stm32 蓝牙
  • 数据库学习MySQL系列2、Windows11系统安装MySQL方法一.msi安装详细教程
  • STM32物联网项目---ESP8266微信小程序结合OneNET平台MQTT实现STM32单片机远程智能控制---代码篇(四)
  • 北京鲁成伟业 | 三屏加固笔记本电脑C156F3
  • 从0~1搭建技术团队的思路
  • 如何在 Unity3D 中实现圆角效果?
  • LeetCode 面试经典 150 题:多数元素(摩尔投票法详解 + 多解法对比)
  • CStringArray 和 CStringList
  • 银行业安全用电系统建设与智能化管理探析
  • 20250909_排查10.1.1.190档案库房综合管理系统20250908备份缺失问题+优化scp脚本(把失败原因记录进日志)并测试脚本执行情况
  • 硬件开发_基于STM32单片机的海鲜冷藏车检测系统
  • AI一周事件(2025年9月3日-9月8日)
  • Unity3D发布的文件打包成Windows安装程序
  • 已知两个平面点的坐标、切线方向、曲率,使用牛顿迭代法构造三阶 Bézier 曲线的方法
  • 全球工业互联网大会 | 蓝卓supOS以数据底座,筑牢工业AI基石
  • k8s交互桥梁:走进Client-Go
  • K8S-Node
  • 嵌入式 - ARM(4) 硬件介绍与开发环境搭建
  • 网络上那些在线 PDF 转换工具安全吗?转换 PDF 需要注意什么