经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 数据库/运维 » Windows » 查看文章
踩坑记录:windows11下使用 VS2022 和 PCL1.14.1 配置点云开发环境
来源:cnblogs  作者:kyszd  时间:2024/7/23 9:08:17  对本文有异议

闲话不多说,具体在windows下下载PCL与解压pcl可以看https://www.yuque.com/huangzhongqing/pcl/这位大佬的文章,那我就具体说一下踩过点坑:

踩坑点1:

按照大佬的文章的步骤进行解压与下载,我的PCL环境下在了K盘中,但是最后不知怎么的我的openni2文件夹下在了C盘里,也就是说3rdparty文件夹下的openni2没有下一层目录了,我的做法就是把c盘里openni2目录下的文件都复制到了K盘中。当然也可以不复制,在配置环境变量时记得要写c盘的openni2不要写K盘的就可以。

踩坑点2:

安装PCL时,如果选择添加环境变量可能会出现“环境变量长度超过1023”这样类似的错误,这时候需要手动配置一下,下面是我的配置办法:


在这张图中,这三个变量应该是安装的时候可以自动写到环境变量里的,第三行是我手动修改了,放到了k盘里,其实可以不放,只要记得是C盘就行,前两行也同样。还有就是下图这个

也是可以自动填写上的,需要我们手动添加的是下面这些:


我们在Path里,尾部加上这些就可以了。

踩坑点3:

链接库问题,这也是比较棘手的问题之一,在3rdparty下的每一个文件夹下的lib文件夹中,新建一个txt文件,内容填写:DIR *.lib /B >liblist.txt DIR .lib /B:列出当前目录中所有以 .lib 为扩展名的文件,且使用简洁的输出格式。DIR:显示目录中的文件和子目录列表。*.lib:匹配所有以 .lib 结尾的文件。/B:使用简洁格式输出,只显示文件名,不显示日期、时间、文件大小等详细信息。liblist.txt是你需要重定向的文件名。最后再把写入命令的txt后缀修改为bat,双击执行即可吧lib文件名称全部写入到liblist.txt中。完成上述操作后,当我们执行时,可能会出现下图的错误:

这个错误的排除也是耗费了我很长时间,最后找到了原因:上面我们得到的liblist列表中,同时包括debug和release版本的lib,那么vs执行的时候就会产生冲突,从而报错,具体做法是我们可以去掉非debug版本的lib文件,比如你把“pcl_registrationd.lib”和 “pcl_registration.lib” 都写上去了那么就去掉后面不带d的,前面有“gd”后缀的一样,保留它,去掉不带gd的。下面是1.14.1我整理好的库:

  1. libboost_atomic-vc143-mt-gd-x64-1_84.lib
  2. libboost_bzip2-vc143-mt-gd-x64-1_84.lib
  3. libboost_chrono-vc143-mt-gd-x64-1_84.lib
  4. libboost_container-vc143-mt-gd-x64-1_84.lib
  5. libboost_context-vc143-mt-gd-x64-1_84.lib
  6. libboost_contract-vc143-mt-gd-x64-1_84.lib
  7. libboost_coroutine-vc143-mt-gd-x64-1_84.lib
  8. libboost_date_time-vc143-mt-gd-x64-1_84.lib
  9. libboost_exception-vc143-mt-gd-x64-1_84.lib
  10. libboost_fiber-vc143-mt-gd-x64-1_84.lib
  11. libboost_filesystem-vc143-mt-gd-x64-1_84.lib
  12. libboost_graph-vc143-mt-gd-x64-1_84.lib
  13. libboost_graph_parallel-vc143-mt-gd-x64-1_84.lib
  14. libboost_iostreams-vc143-mt-gd-x64-1_84.lib
  15. libboost_json-vc143-mt-gd-x64-1_84.lib
  16. libboost_locale-vc143-mt-gd-x64-1_84.lib
  17. libboost_log-vc143-mt-gd-x64-1_84.lib
  18. libboost_log_setup-vc143-mt-gd-x64-1_84.lib
  19. libboost_math_c99-vc143-mt-gd-x64-1_84.lib
  20. libboost_math_c99f-vc143-mt-gd-x64-1_84.lib
  21. libboost_math_c99l-vc143-mt-gd-x64-1_84.lib
  22. libboost_math_tr1-vc143-mt-gd-x64-1_84.lib
  23. libboost_math_tr1f-vc143-mt-gd-x64-1_84.lib
  24. libboost_math_tr1l-vc143-mt-gd-x64-1_84.lib
  25. libboost_mpi-vc143-mt-gd-x64-1_84.lib
  26. libboost_nowide-vc143-mt-gd-x64-1_84.lib
  27. libboost_numpy310-vc143-mt-gd-x64-1_84.lib
  28. libboost_prg_exec_monitor-vc143-mt-gd-x64-1_84.lib
  29. libboost_program_options-vc143-mt-gd-x64-1_84.lib
  30. libboost_python310-vc143-mt-gd-x64-1_84.lib
  31. libboost_random-vc143-mt-gd-x64-1_84.lib
  32. libboost_regex-vc143-mt-gd-x64-1_84.lib
  33. libboost_serialization-vc143-mt-gd-x64-1_84.lib
  34. libboost_stacktrace_noop-vc143-mt-gd-x64-1_84.lib
  35. libboost_stacktrace_windbg-vc143-mt-gd-x64-1_84.lib
  36. libboost_stacktrace_windbg_cached-vc143-mt-gd-x64-1_84.lib
  37. libboost_system-vc143-mt-gd-x64-1_84.lib
  38. libboost_test_exec_monitor-vc143-mt-gd-x64-1_84.lib
  39. libboost_thread-vc143-mt-gd-x64-1_84.lib
  40. libboost_timer-vc143-mt-gd-x64-1_84.lib
  41. libboost_type_erasure-vc143-mt-gd-x64-1_84.lib
  42. libboost_unit_test_framework-vc143-mt-gd-x64-1_84.lib
  43. libboost_url-vc143-mt-gd-x64-1_84.lib
  44. libboost_wave-vc143-mt-gd-x64-1_84.lib
  45. libboost_wserialization-vc143-mt-gd-x64-1_84.lib
  46. libboost_zlib-vc143-mt-gd-x64-1_84.lib
  47. flann-gd.lib
  48. flann_cpp-gd.lib
  49. flann_cpp_s-gd.lib
  50. flann_s-gd.lib
  51. qhullcpp.lib
  52. qhullcpp_d.lib
  53. qhullstatic.lib
  54. qhullstatic_d.lib
  55. qhullstatic_rd.lib
  56. qhull_rd.lib
  57. vtkcgns-9.3-gd.lib
  58. vtkChartsCore-9.3-gd.lib
  59. vtkCommonColor-9.3-gd.lib
  60. vtkCommonComputationalGeometry-9.3-gd.lib
  61. vtkCommonCore-9.3-gd.lib
  62. vtkCommonDataModel-9.3-gd.lib
  63. vtkCommonExecutionModel-9.3-gd.lib
  64. vtkCommonMath-9.3-gd.lib
  65. vtkCommonMisc-9.3-gd.lib
  66. vtkCommonSystem-9.3-gd.lib
  67. vtkCommonTransforms-9.3-gd.lib
  68. vtkDICOMParser-9.3-gd.lib
  69. vtkDomainsChemistry-9.3-gd.lib
  70. vtkDomainsChemistryOpenGL2-9.3-gd.lib
  71. vtkdoubleconversion-9.3-gd.lib
  72. vtkexodusII-9.3-gd.lib
  73. vtkexpat-9.3-gd.lib
  74. vtkFiltersAMR-9.3-gd.lib
  75. vtkFiltersCellGrid-9.3-gd.lib
  76. vtkFiltersCore-9.3-gd.lib
  77. vtkFiltersExtraction-9.3-gd.lib
  78. vtkFiltersFlowPaths-9.3-gd.lib
  79. vtkFiltersGeneral-9.3-gd.lib
  80. vtkFiltersGeneric-9.3-gd.lib
  81. vtkFiltersGeometry-9.3-gd.lib
  82. vtkFiltersGeometryPreview-9.3-gd.lib
  83. vtkFiltersHybrid-9.3-gd.lib
  84. vtkFiltersHyperTree-9.3-gd.lib
  85. vtkFiltersImaging-9.3-gd.lib
  86. vtkFiltersModeling-9.3-gd.lib
  87. vtkFiltersParallel-9.3-gd.lib
  88. vtkFiltersParallelImaging-9.3-gd.lib
  89. vtkFiltersPoints-9.3-gd.lib
  90. vtkFiltersProgrammable-9.3-gd.lib
  91. vtkFiltersReduction-9.3-gd.lib
  92. vtkFiltersSelection-9.3-gd.lib
  93. vtkFiltersSMP-9.3-gd.lib
  94. vtkFiltersSources-9.3-gd.lib
  95. vtkFiltersStatistics-9.3-gd.lib
  96. vtkFiltersTensor-9.3-gd.lib
  97. vtkFiltersTexture-9.3-gd.lib
  98. vtkFiltersTopology-9.3-gd.lib
  99. vtkFiltersVerdict-9.3-gd.lib
  100. vtkfmt-9.3-gd.lib
  101. vtkfreetype-9.3-gd.lib
  102. vtkGeovisCore-9.3-gd.lib
  103. vtkgl2ps-9.3-gd.lib
  104. vtkglew-9.3-gd.lib
  105. vtkhdf5-9.3-gd.lib
  106. vtkhdf5_hl-9.3-gd.lib
  107. vtkImagingColor-9.3-gd.lib
  108. vtkImagingCore-9.3-gd.lib
  109. vtkImagingFourier-9.3-gd.lib
  110. vtkImagingGeneral-9.3-gd.lib
  111. vtkImagingHybrid-9.3-gd.lib
  112. vtkImagingMath-9.3-gd.lib
  113. vtkImagingMorphological-9.3-gd.lib
  114. vtkImagingSources-9.3-gd.lib
  115. vtkImagingStatistics-9.3-gd.lib
  116. vtkImagingStencil-9.3-gd.lib
  117. vtkInfovisCore-9.3-gd.lib
  118. vtkInfovisLayout-9.3-gd.lib
  119. vtkInteractionImage-9.3-gd.lib
  120. vtkInteractionStyle-9.3-gd.lib
  121. vtkInteractionWidgets-9.3-gd.lib
  122. vtkIOAMR-9.3-gd.lib
  123. vtkIOAsynchronous-9.3-gd.lib
  124. vtkIOCellGrid-9.3-gd.lib
  125. vtkIOCesium3DTiles-9.3-gd.lib
  126. vtkIOCGNSReader-9.3-gd.lib
  127. vtkIOChemistry-9.3-gd.lib
  128. vtkIOCityGML-9.3-gd.lib
  129. vtkIOCONVERGECFD-9.3-gd.lib
  130. vtkIOCore-9.3-gd.lib
  131. vtkIOEnSight-9.3-gd.lib
  132. vtkIOExodus-9.3-gd.lib
  133. vtkIOExport-9.3-gd.lib
  134. vtkIOExportGL2PS-9.3-gd.lib
  135. vtkIOExportPDF-9.3-gd.lib
  136. vtkIOFLUENTCFF-9.3-gd.lib
  137. vtkIOGeometry-9.3-gd.lib
  138. vtkIOHDF-9.3-gd.lib
  139. vtkIOImage-9.3-gd.lib
  140. vtkIOImport-9.3-gd.lib
  141. vtkIOInfovis-9.3-gd.lib
  142. vtkIOIOSS-9.3-gd.lib
  143. vtkIOLegacy-9.3-gd.lib
  144. vtkIOLSDyna-9.3-gd.lib
  145. vtkIOMINC-9.3-gd.lib
  146. vtkIOMotionFX-9.3-gd.lib
  147. vtkIOMovie-9.3-gd.lib
  148. vtkIONetCDF-9.3-gd.lib
  149. vtkIOOggTheora-9.3-gd.lib
  150. vtkIOParallel-9.3-gd.lib
  151. vtkIOParallelXML-9.3-gd.lib
  152. vtkIOPLY-9.3-gd.lib
  153. vtkIOSegY-9.3-gd.lib
  154. vtkIOSQL-9.3-gd.lib
  155. vtkioss-9.3-gd.lib
  156. vtkIOTecplotTable-9.3-gd.lib
  157. vtkIOVeraOut-9.3-gd.lib
  158. vtkIOVideo-9.3-gd.lib
  159. vtkIOXML-9.3-gd.lib
  160. vtkIOXMLParser-9.3-gd.lib
  161. vtkjpeg-9.3-gd.lib
  162. vtkjsoncpp-9.3-gd.lib
  163. vtkkissfft-9.3-gd.lib
  164. vtklibharu-9.3-gd.lib
  165. vtklibproj-9.3-gd.lib
  166. vtklibxml2-9.3-gd.lib
  167. vtkloguru-9.3-gd.lib
  168. vtklz4-9.3-gd.lib
  169. vtklzma-9.3-gd.lib
  170. vtkmetaio-9.3-gd.lib
  171. vtknetcdf-9.3-gd.lib
  172. vtkogg-9.3-gd.lib
  173. vtkParallelCore-9.3-gd.lib
  174. vtkParallelDIY-9.3-gd.lib
  175. vtkpng-9.3-gd.lib
  176. vtkpugixml-9.3-gd.lib
  177. vtkRenderingAnnotation-9.3-gd.lib
  178. vtkRenderingCellGrid-9.3-gd.lib
  179. vtkRenderingContext2D-9.3-gd.lib
  180. vtkRenderingContextOpenGL2-9.3-gd.lib
  181. vtkRenderingCore-9.3-gd.lib
  182. vtkRenderingFreeType-9.3-gd.lib
  183. vtkRenderingGL2PSOpenGL2-9.3-gd.lib
  184. vtkRenderingHyperTreeGrid-9.3-gd.lib
  185. vtkRenderingImage-9.3-gd.lib
  186. vtkRenderingLabel-9.3-gd.lib
  187. vtkRenderingLICOpenGL2-9.3-gd.lib
  188. vtkRenderingLOD-9.3-gd.lib
  189. vtkRenderingOpenGL2-9.3-gd.lib
  190. vtkRenderingSceneGraph-9.3-gd.lib
  191. vtkRenderingUI-9.3-gd.lib
  192. vtkRenderingVolume-9.3-gd.lib
  193. vtkRenderingVolumeOpenGL2-9.3-gd.lib
  194. vtkRenderingVtkJS-9.3-gd.lib
  195. vtksqlite-9.3-gd.lib
  196. vtksys-9.3-gd.lib
  197. vtkTestingRendering-9.3-gd.lib
  198. vtktheora-9.3-gd.lib
  199. vtktiff-9.3-gd.lib
  200. vtkverdict-9.3-gd.lib
  201. vtkViewsContext2D-9.3-gd.lib
  202. vtkViewsCore-9.3-gd.lib
  203. vtkViewsInfovis-9.3-gd.lib
  204. vtkWrappingTools-9.3-gd.lib
  205. vtkzlib-9.3-gd.lib
  206. pcl_commond.lib
  207. pcl_featuresd.lib
  208. pcl_filtersd.lib
  209. pcl_iod.lib
  210. pcl_io_plyd.lib
  211. pcl_kdtreed.lib
  212. pcl_keypointsd.lib
  213. pcl_mld.lib
  214. pcl_octreed.lib
  215. pcl_outofcored.lib
  216. pcl_peopled.lib
  217. pcl_recognitiond.lib
  218. pcl_registrationd.lib
  219. pcl_sample_consensusd.lib
  220. pcl_searchd.lib
  221. pcl_segmentationd.lib
  222. pcl_stereod.lib
  223. pcl_surfaced.lib
  224. pcl_trackingd.lib
  225. pcl_visualizationd.lib

上面这个问题,同样适用于执行结果不报错,但是却在console窗口显示非0退出的语句这个问题。

踩坑点4:

无法解析的外部符号 "void __cdecl vtkRenderingOpenGL_AutoInit_Construct(void)" (?vtkRenderingOpenGL_AutoInit_Construct@@YAXXZ),函数 "public: __cdecl `anonymous namespace'::vtkRenderingOpenGL_ModuleInit::vtkRenderingOpenGL_ModuleInit(void)" (??0vtkRenderingOpenGL_ModuleInit@?A0xdbae2661@@QEAA@XZ)
我用的是文章开头大佬的文章中的代码:

  1. #include <pcl/visualization/cloud_viewer.h>
  2. #include <iostream>
  3. #include <pcl/io/io.h>
  4. #include <pcl/io/pcd_io.h>
  5. #include <vtkAutoInit.h>
  6. VTK_MODULE_INIT(vtkInteractionStyle);
  7. VTK_MODULE_INIT(vtkRenderingFreeType);
  8. VTK_MODULE_INIT(vtkRenderingOpenGL);
  9. int user_data;
  10. void viewerOneOff(pcl::visualization::PCLVisualizer& viewer)
  11. {
  12. viewer.setBackgroundColor(1.0, 0.5, 1.0);
  13. pcl::PointXYZ o;
  14. o.x = 1.0;
  15. o.y = 0;
  16. o.z = 0;
  17. viewer.addSphere(o, 0.25, "sphere", 0);
  18. std::cout << "i only run once" << std::endl;
  19. }
  20. void viewerPsycho(pcl::visualization::PCLVisualizer& viewer)
  21. {
  22. static unsigned count = 0;
  23. std::stringstream ss;
  24. ss << "Once per viewer loop: " << count++;
  25. viewer.removeShape("text", 0);
  26. viewer.addText(ss.str(), 200, 300, "text", 0);
  27. //FIXME: possible race condition here:
  28. user_data++;
  29. }
  30. int main()
  31. {
  32. pcl::PointCloud<pcl::PointXYZRGBA>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZRGBA>);
  33. pcl::io::loadPCDFile("rabbit.pcd", *cloud);
  34. pcl::visualization::CloudViewer viewer("Cloud Viewer");
  35. //blocks until the cloud is actually rendered
  36. viewer.showCloud(cloud);
  37. //use the following functions to get access to the underlying more advanced/powerful
  38. //PCLVisualizer
  39. //This will only get called once
  40. viewer.runOnVisualizationThreadOnce(viewerOneOff);
  41. //This will get called once per visualization iteration
  42. viewer.runOnVisualizationThread(viewerPsycho);
  43. while (!viewer.wasStopped())
  44. {
  45. //you can also do cool processing here
  46. //FIXME: Note that this is running in a separate thread from viewerPsycho
  47. //and you should guard against race conditions yourself...
  48. user_data++;
  49. }
  50. return 0;
  51. }

只需要把VTK_MODULE_INIT(vtkRenderingOpenGL);改为VTK_MODULE_INIT(vtkRenderingOpenGL2);即可

原文链接:https://www.cnblogs.com/kyszdsmz/p/18316623

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号