1.error C2589: “(”: “::”右边的非法标记 、error C2059: 语法错误 : “::”
MFC程序过程中,PCL使用STL一些类编译出错,放到Console Application里一切正常。
比如出现如下错误:
解决办法:
设置项目属性,在预定义处理器中添加定义NOMINMAX来禁止使用Vsual C++的min/max宏定义。
项目属性 --> C/C++ --> 预处理器 ——> 预处理器定义 (此处添加预定义编译开关 NOMINMAX)注意!!!一定要加在第一个上面。
2.error C2661: “operator new” : 没有重载函数接受 3 个参数
错误原因:
对于mfc与pcl的各种冲突,例如其上。
解决方法:
直接注销了,dlg里面的#define new DEBUG_NEW
3.error LNK2019: 无法解析的外部符号 "void __cdeclvtkRenderingOpenGL_AutoInit_Construct(void)"(?vtkRenderingOpenGL_AutoInit_Construct@@YAXXZ),该符号在函数 "public: __thiscallvtkRenderingOpenGL_ModuleInit::vtkRenderingOpenGL_ModuleInit(void)"(??0vtkRenderingOpenGL_ModuleInit@@QAE@XZ) 中被引用
error LNK2019: 无法解析的外部符号 "void __cdeclvtkRenderingOpenGL_AutoInit_Destruct(void)"(?vtkRenderingOpenGL_AutoInit_Destruct@@YAXXZ),该符号在函数 "public: __thiscall vtkRenderingOpenGL_ModuleInit::~vtkRenderingOpenGL_ModuleInit(void)"(??1vtkRenderingOpenGL_ModuleInit@@QAE@XZ) 中被引用
解决方法:
在头文件加入 #include <vtkAutoInit.h>
同时修改
VTK_MODULE_INIT(vtkRenderingOpenGL)为VTK_MODULE_INIT(vtkRenderingOpenGL2)
编译后出现图像,但是有warning:
Warning: In E:\new\VTK\VTK-8.1.0\Rendering\Core\vtkInteractorStyleSwitchBase.cxx, line 43
vtkInteractorStyleSwitchBase (000001E3F4CDE540): Warning: Link to vtkInteractionStyle for default style selection.
解决办法:是加入
VTK_MODULE_INIT(vtkInteractionStyle) ;
VTK_MODULE_INIT(vtkRenderingFreeType);
4.在加载点云时出现错误提示
File: minkernel\crts\ucrt\src\appcrt\heap\debug_heap.cpp
Line: 980
Expression: __acrt_first_block == header
For information on how your program can cause an assertion
failure, see the Visual C++ documentation on asserts.
解决方法:
在配置属性->常规->MFC的使用中,将在静态库中使用MFC改为在共享DLL中使用MFC。
5.错误 C3861 “min”: 找不到标识符 MFCApplication1 C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\um\GdiplusTypes.h 479
解决方法:下载最新版的Window SDK版本,选择最新安装的版本