包含"pcl_visualizer.h"时出现错误LNK2001
error LNK2001 when including "pcl_visualizer.h"
我想使用点云库来可视化点云。我已经包括:
#include <pcl/point_types.h>
#include <pcl/io/pcd_io.h>
#include <pcl/kdtree/kdtree_flann.h>
#include <pcl/features/normal_3d.h>
#include <pcl/surface/gp3.h>
没有任何问题,但当我添加时
#include <pcl/visualization/pcl_visualizer.h>
我收到一个LNK2001错误。
Fehler 51错误LNK2001:Nicht aufgelöstes externaes Symbol"public:virtual void __cdecl pcl::visualization::PCLVisualizer::FPSCallback::Execute(类vtkObject*,unsigned long,void*)"(?Execute@FPSCallback@PCLVisualizer@visualization@pcl@@UEAAXPEAVvtkObject@@KPEAX@Z)"
我想少了一个图书馆,但我不知道是哪一个。这是我的程序的附加依赖项列表:
- pcl_common_debug.lib
- pcl_io_debug.lib
- pcl_kdtree_debug.lib
- pcl_features_debug.lib
- pcl_surface_debug.lib
- pcl_search_debug.lib
- pcl_visualization_debug.lib
- vtkCommonCore-6.1.lib
- vtksys-6.1.lib
- 以及一些opencv库
有人能告诉我哪个图书馆不见了吗?
提前感谢!
编辑:
我基于greedy_projection.cpp代码创建了一个小的cpp文件。多亏了drescherjm的建议,我使用cmake创建了这个项目,并且我可以毫无错误地编译它。然后我想把这些东西包括在我的另一个项目中,但同样的错误发生了。现在我明白了,错误的原因是\clr标志。我有一个Windows.Forms项目,所以它是用\clr编译的。greedy_projection.cpp项目是在没有此标志的情况下编译的。有什么方法可以避免pcl_visualizer.h与\clr不兼容吗?
我可以解决这个问题!
我刚刚评论了内部的代码
struct FPSCallback : public vtkCommand
pcl/visualization/pcl-videalizer.h的函数。然后一切都编译得很好。我不需要FPSCallback,所以它是我在clr支持下运行代码的完美解决方案。
感谢drescherjm的帮助!!
我通过将pcl_visualizer代码放在顶部的托管c++代码中解决了这个问题。我还必须添加一个标题:
#include <vtkTextActor.h>
void
pcl::visualization::PCLVisualizer::FPSCallback::Execute(vtkObject* caller, unsigned long, void*)
{
vtkRenderer *ren = reinterpret_cast<vtkRenderer *> (caller);
float fps = 1.0f / static_cast<float> (ren->GetLastRenderTimeInSeconds());
char buf[128];
sprintf(buf, "%.1f FPS", fps);
actor->SetInput(buf);
}
另一种选择是进入pcl_visualizer.h并注释掉有问题的行(我不知道为什么这行会引起问题,但我把它缩小到了这个范围,我的vtk可视化工具仍然有效!):
//FPSCallback (const FPSCallback& src) : vtkCommand (), actor (src.actor), pcl_visualizer (src.pcl_visualizer), decimated (src.decimated) {}
代码看起来像:
struct FPSCallback : public vtkCommand
{
static FPSCallback *New () { return (new FPSCallback); }
FPSCallback () : actor (), pcl_visualizer (), decimated () {}
//FPSCallback (const FPSCallback& src) : vtkCommand (), actor (src.actor), pcl_visualizer (src.pcl_visualizer), decimated (src.decimated) {}
FPSCallback& operator = (const FPSCallback& src) { actor = src.actor; pcl_visualizer = src.pcl_visualizer; decimated = src.decimated; return (*this); }
virtual void
Execute (vtkObject*, unsigned long event_id, void*);
vtkTextActor *actor;
PCLVisualizer* pcl_visualizer;
bool decimated;
};
/** brief The FPSCallback object for the current visualizer. */
vtkSmartPointer<FPSCallback> update_fps_;
- 为什么我的 heap.h 文件给我一个LNK2001错误?
- 将QT项目导入Visual Studio 2019会给我带来很多LNK2001错误
- 我收到错误LNK2001:未解析的外部符号(C++代码)
- 使用模板成员函数时出现LNK2001错误
- 错误 LNK2001:未解析的外部符号"private: static class Game Game::game_"
- LNK2001尝试将我的主函数分离为主.cpp时,我有一个奇怪的错误
- C++、错误LNK1120和LNK2001中未解析的外部符号
- 错误 LNK2001:VS2017 中未解析的外部符号___iob_func
- 使用外部变量会导致"unsigned char"错误LNK2001
- Dlib错误LNK2001未解析的外部符号
- VTK / ITK/ QT - 未解决的外部符号错误 (LNK2001)
- 互联网引起链接器错误lnk1120和lnk2001
- 使用boost::numpy时LNK2001错误
- LNK2001在X64环境中的编译代码上看到的错误.但是,该代码在X86环境中填充了罚款
- 我如何使用Bullet Physics SDK在VS2015中清除错误LNK2001
- LNK2001带有静态属性和方法的错误(QT,C )
- LNK2001:我的提升库(可能)构建错误
- 初始化 QList<MyStruct> 作为静态类成员给出LNK2001错误
- 命名空间内的变量LNK2001错误
- 使用 PCL 的广度第一迭代器时LNK2001错误