win10+vs+pcl配置老是提示error的解决办法

win10+vs+pcl配置老是提示error的解决办法

    • 配置到最后出现问题依旧出现各种错误
    • 出现如下vtkCommonCore-8.0-gd.lib的error时
    • 关于库目录的添加
    • 注意看vs的错误提示信息
    • 当前计算机类型arm与目标计算机类型x64不相符
        • 当前计算机类型arm与目标计算机类型x64不相符
    • vtk方面的问题

配置到最后出现问题依旧出现各种错误

##配置到最后出现问题依旧出现各种错误,各种打不开
可在代码前面加如下命令解决:
#pragma comment(lib, “User32.lib”)
#pragma comment(lib, “gdi32.lib”)

出现如下vtkCommonCore-8.0-gd.lib的error时

1>vtkCommonCore-8.0-gd.lib(vtkDebugLeaks.obj) : error LNK2019: 无法解析的外部符号 __imp_MessageBoxA,该符号在函数 “protected: static int __cdecl vtkDebugLeaks::DisplayMessageBox(char const *)” (?DisplayMessageBox@vtkDebugLeaks@@KAHPEBD@Z) 中被引用
1>vtkCommonCore-8.0-gd.lib(vtkWin32OutputWindow.obj) : error LNK2001: 无法解析的外部符号 __imp_MessageBoxA
1>vtkCommonCore-8.0-gd.lib(vtkWin32OutputWindow.obj) : error LNK2019: 无法解析的外部符号 __imp_GetStockObject,该符号在函数 “protected: static int __cdecl vtkWin32OutputWindow::Initialize(void)” (?Initialize@vtkWin32OutputWindow@@KAHXZ) 中被引用
1>vtkCommonCore-8.0-gd.lib(vtkWin32OutputWindow.obj) : error LNK2019: 无法解析的外部符号 __imp_SendMessageA,该符号在函数 “protected: static void __cdecl vtkWin32OutputWindow::AddText(char const *)” (?AddText@vtkWin32OutputWindow@@KAXPEBD@Z) 中被引用
1>vtkCommonCore-8.0-gd.lib(vtkWin32OutputWindow.obj) : error LNK2019: 无法解析的外部符号 __imp_DefWindowProcA,该符号在函数 "__int64 cdecl vtkWin32OutputWindowWndProc(struct HWND *,unsigned int,unsigned __int64,int64)" (?vtkWin32OutputWindowWndProc@@YA_JPEAUHWND@@I_K_J@Z) 中被引用
1>vtkCommonCore-8.0-gd.lib(vtkWin32OutputWindow.obj) : error LNK2019: 无法解析的外部符号 __imp_RegisterClassA,该符号在函数 “protected: static int __cdecl vtkWin32OutputWindow::Initialize(void)” (?Initialize@vtkWin32OutputWindow@@KAHXZ) 中被引用
1>vtkCommonCore-8.0-gd.lib(vtkWin32OutputWindow.obj) : error LNK2019: 无法解析的外部符号 __imp_GetClassInfoA,该符号在函数 “protected: static int __cdecl vtkWin32OutputWindow::Initialize(void)” (?Initialize@vtkWin32OutputWindow@@KAHXZ) 中被引用
1>vtkCommonCore-8.0-gd.lib(vtkWin32OutputWindow.obj) : error LNK2019: 无法解析的外部符号 __imp_CreateWindowExA,该符号在函数 “protected: static int __cdecl vtkWin32OutputWindow::Initialize(void)” (?Initialize@vtkWin32OutputWindow@@KAHXZ) 中被引用
1>vtkCommonCore-8.0-gd.lib(vtkWin32OutputWindow.obj) : error LNK2019: 无法解析的外部符号 __imp_ShowWindow,该符号在函数 “protected: static int __cdecl vtkWin32OutputWindow::Initialize(void)” (?Initialize@vtkWin32OutputWindow@@KAHXZ) 中被引用
1>vtkCommonCore-8.0-gd.lib(vtkWin32OutputWindow.obj) : error LNK2019: 无法解析的外部符号 __imp_MoveWindow,该符号在函数 "__int64 cdecl vtkWin32OutputWindowWndProc(struct HWND *,unsigned int,unsigned __int64,int64)" (?vtkWin32OutputWindowWndProc@@YA_JPEAUHWND@@I_K_J@Z) 中被引用
1>vtkCommonCore-8.0-gd.lib(vtkWin32OutputWindow.obj) : error LNK2019: 无法解析的外部符号 __imp_LoadCursorA,该符号在函数 “protected: static int __cdecl vtkWin32OutputWindow::Initialize(void)” (?Initialize@vtkWin32OutputWindow@@KAHXZ) 中被引用
1>vtkCommonCore-8.0-gd.lib(vtkWin32OutputWindow.obj) : error LNK2019: 无法解析的外部符号 __imp_LoadIconA,该符号在函数 “protected: static int __cdecl vtkWin32OutputWindow::Initialize(void)” (?Initialize@vtkWin32OutputWindow@@KAHXZ) 中被引用
若出现上面一系列问题,其实就是vtkCommonCore-8.0-gd.lib这一个库的问题,解决方法是在你的连接器–输入–附加依赖项中添加如下两个东西
gdi32.lib
User32.lib
重新生成显示成功运行

关于库目录的添加

若你的程序有如下语句
#include
那你在添加库目录的时候到D:\PCL 1.8.1\include\pcl-1.8这个位置就够了,
若添加到下面这几种情况就会报错
D:\PCL 1.8.1\include\pcl-1.8\pcl(//会报错)
D:\PCL 1.8.1\include\pcl-1.8\pcl\io(//回报错)

如果还是提示打不开某某.lib
可以尝试把dll文件全部放到 windows system32 (后果很明显)

注意看vs的错误提示信息

如果出现如下情况:
1>d:\program files\pcl 1.8.1\include\pcl-1.8\pcl\io\impl\pcd_io.hpp(59): fatal error C1083: 无法打开包括文件: “windows.h”: No such file or directory
说明你没有把windows.h所在的文件夹放在 属性页–vc++目录–包含目录 里面,你需要搜索相应文件所在的文件夹,然后放到里面,我的就是找到C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Include,然后把这个放到包含目录,就可以解决了,解决了还会出现类似其他错误,依照此法依次添加就好
当然有的是要添加到库目录里面,一般lib的文件夹添加到库目录, included的文件夹添加到包含目录

当前计算机类型arm与目标计算机类型x64不相符

遇到过这个问题,稀里糊涂就解决了,哪位老哥还记得解决方法,请留言

当前计算机类型arm与目标计算机类型x64不相符

warning LNK4098: 默认库“MSVCRT”与其他库的使用冲突;使用 /NODEFAULTLIB:library

解决方法:
【项目】->【属性】->【配置属性】->【连接器】->【输入】->【忽略指定库】,输入:msvcrt.lib
或者:
【项目】->【属性】->【配置属性】->【连接器】->【命令行】,输入:/NODEFAULTLIB:msvcrt.lib

####VTK
#include
VTK_MODULE_INIT(vtkRenderingOpenGL2);
VTK_MODULE_INIT(vtkRenderingVolumeOpenGL2);
VTK_MODULE_INIT(vtkInteractionStyle);
VTK_MODULE_INIT(vtkRenderingFreeType);
后在编译时出现了新的错误:无法解析的外部符号 “void __cdecl vtkRenderingOpenGL2_AutoInit_Construct(void)” (?vtkRenderingOpenGL2_AutoInit_Construct@@YAXXZ),该符号在函数 “public: __cdecl vtkRenderingOpenGL2_ModuleInit::vtkRenderingOpenGL2_ModuleInit(void)” (??0vtkRenderingOpenGL2_ModuleInit@@QEAA@XZ) 中被引用
而且这个问题都是针对
VTK_MODULE_INIT(vtkRenderingOpenGL2);
VTK_MODULE_INIT(vtkRenderingVolumeOpenGL2);
解救办法:
我的VTK是8.0版本,网上有博主说VTK版本在6.0以前需要用
#define vtkRenderingCore_AUTOINIT 4(vtkInteractionStyle,vtkRenderingFreeType,vtkRenderingFreeTypeOpenGL,vtkRenderingOpenGL)
#define vtkRenderingVolume_AUTOINIT 1(vtkRenderingVolumeOpenGL)

这两行语句去初始化,但是在6版本以后就需要用:
#include VTK_MODULE_INIT(vtkRenderingOpenGL2);
VTK_MODULE_INIT(vtkRenderingFreeTypeOpenGL2); VTK_MODULE_INIT(vtkInteractionStyle);
去初始化。
去掉vtkRenderingOpenGL2和vtkRenderingFreeTypeOpenGL2后面的2,然后就编译成功了

vtk方面的问题

链接库里面要单独加上一个opengl32.lib,缺少这个所有可视化方面的问题都有可能报错

小白一枚,欢迎探讨

你可能感兴趣的:(pcl)