cmake编译zlib出错
❶ 如何用pcl配置visual studio 2010
1.首先下载windows的安装包。我用的是预编译版本的多合一包,需要自己编译的也可以。注意下载时要看清楚vs2010的版本是32位还是64位,不然一些库会找不到对应入口,导致编译不通过的。
tips:可以在开始菜单下的Microsoft Visual Studio 2010文件夹下,查看Microsoft Windows SDK Tools,如果看到程序后面(如IL反汇编程序)有(x64)字样,则vs是64位的,没有就放心安装32位版本吧。
如果是用cmake生成pcl解决方案,要注意在cmake的时候确定各个依赖库的路径,可以在对应项上把鼠标停留一下,看看有什么提示信息,特别是VTK的目录。有些时候能够继续生成,但是部分模块并没有设置好参数,会导致编译出来的PCL运行不良好。
2.安装完毕后就测试一下PCL的效果吧,要注意项目对应的包含目录、库目录、库文件(LIB)和运行环境(DLL)。
用http://www.pointclouds.org/documentation/tutorials/pcl_visualizer.php#pcl-visualizer上面的例程试一试,新建工程,粘贴代码……
在包含目录下添加:
C:\Program Files\PCL 1.5.1\3rdParty\Boost\include;
C:\Program Files\PCL 1.5.1\3rdParty\Eigen\include;
C:\Program Files\PCL 1.5.1\3rdParty\Flann\include;
C:\Program Files\PCL 1.5.1\3rdParty\Qhull\include;
C:\Program Files\PCL 1.5.1\3rdParty\VTK\include\vtk-5.8;
C:\Program Files\OpenNI\Include;
C:\Program Files\PCL 1.5.1\include\pcl-1.5;
(对应自己机子上PCL的位置,如果为了CMAKE方便很多会放在根目录下。即C:\PCL)
在库目录下添加:
C:\Program Files\PCL 1.5.1\3rdParty\Boost\lib;
C:\Program Files\PCL 1.5.1\3rdParty\Qhull\lib;
C:\Program Files\PCL 1.5.1\3rdParty\Flann\lib;
C:\Program Files\PCL 1.5.1\3rdParty\VTK\lib\vtk-5.8;
C:\Program Files\PCL 1.5.1\lib;
C:\Program Files\OpenNI\Lib;
在附加依赖项上添加:
opengl32.lib
pcl_kdtree_debug.lib
pcl_io_debug.lib
pcl_search_debug.lib
pcl_segmentation_debug.lib
pcl_apps_debug.lib
pcl_features_debug.lib
pcl_filters_debug.lib
pcl_visualization_debug.lib
pcl_common_debug.lib
flann_cpp_s-gd.lib
libboost_system-vc100-mt-gd-1_47.lib
libboost_filesystem-vc100-mt-gd-1_47.lib
libboost_thread-vc100-mt-gd-1_47.lib
libboost_date_time-vc100-mt-gd-1_47.lib
libboost_iostreams-vc100-mt-gd-1_47.lib
openNI.lib
vtkalglib-gd.lib
vtkCharts-gd.lib
vtkCommon-gd.lib
vtkDICOMParser-gd.lib
vtkexoIIc-gd.lib
vtkexpat-gd.lib
vtkFiltering-gd.lib
vtkfreetype-gd.lib
vtkftgl-gd.lib
vtkGenericFiltering-gd.lib
vtkGeovis-gd.lib
vtkGraphics-gd.lib
vtkhdf5-gd.lib
vtkHybrid-gd.lib
vtkImaging-gd.lib
vtkInfovis-gd.lib
vtkIO-gd.lib
vtkjpeg-gd.lib
vtklibxml2-gd.lib
vtkmetaio-gd.lib
vtkNetCDF-gd.lib
vtkNetCDF_cxx-gd.lib
vtkpng-gd.lib
vtkproj4-gd.lib
vtkRendering-gd.lib
vtksqlite-gd.lib
vtksys-gd.lib
vtktiff-gd.lib
vtkverdict-gd.lib
vtkViews-gd.lib
vtkVolumeRendering-gd.lib
vtkWidgets-gd.lib
vtkzlib-gd.lib
这里要注意PCL引用到的其他库文件一定要加进去,VTK的库很多,而且依赖关系我看得很乱,所以为了方便就全加进去了。
如果没有加完整,很多信息提示错误的,之前忘了加一个什么库,导致很多error LNK2019,还让我重装了很多次……
注意库要对应debug和release版,debug后面一般都有-gd或者_debug的,看看就能分出来了。对应错了还会有error LNK:
error LNK2038: mismatch detected for '_ITERATOR_DEBUG_LEVEL': value '2' doesn't match value '0' in XXXX.......
这时应该可以看到成功生成的信息了:
❷ 开发Electron,不小心接触到C++,经过一周多的时间终于摸索出
研究开发Electron过程中,发现程序在Windows环境下运行无误,但在Linux和macOS系统中遇到问题,主要源于依赖的第三方插件只提供exe程序。为了解决这一问题,开始探索如何使用C++等源码编译出适用于Windows、Linux、macOS的二进制应用程序。
经过一周的学习与实践,终于掌握如何编译Linux和Windows应用程序,但尚未精通在单一系统环境下编译出Windows、Linux、macOS兼容的程序。当前主要涉及交叉编译技术,正深入研究以期获得完整流程,以便后续发布相关教程。
开始准备工具,包括Windows 10操作系统、CMake、Visual Studio 2019等。学习过程分为几个步骤:下载并解压libpng-1.6.35源码,查看依赖zlib的版本信息,下载zlib-1.2.8源码,编译生成debug和release版本的静态链接库,并复制zlib-1.2.8/build/zconf.h文件到zlib-1.2.8目录下。随后,使用CMake编译libpng-1.6.35,并生成适用于Windows和Linux的静态链接库。同样,遵循上述流程完成mozjpeg-4.0.3的编译。
对于使用MinGW编译的疑问,通过CMake GUI选择“MinGW Makefile”进行配置,等待配置完成并生成Makefile后,在命令行中执行相应的make命令。如果编译出的exe文件无法单独使用,需确保程序依赖的dll文件与exe文件放在同一目录,或使用.xxx-static.exe的命名格式,确保程序正常运行。