构建c+时未解决的外部问题+;使用boost的预开发库的包装器 我编写了一个使用C++中的PCL和Boost的库。它正在完美地建造。当我试图用C++/CLR为它做一个包装器时,我得到了很多未解决的错误。 首先,为什么VisualStudio在构建包装器时要重新构建我的库? 其次,我为什么会出现以下未解决的错误 Error LNK2005 "protected: virtual void __cdecl pcl::Grabber::signalsChanged(void)" (?signalsChanged@Grabber@pcl@@MEAAXXZ) already defined in pcl_io_debug.lib(pcl_io_debug.dll) Error LNK2005 "protected: virtual void __cdecl pcl::Grabber::signalsChanged(void)" (?signalsChanged@Grabber@pcl@@MEAAXXZ) already defined in pcl_io_debug.lib(pcl_io_debug.dll) Error LNK2001 unresolved external symbol "public: virtual void __cdecl pcl::visualization::PCLVisualizer::FPSCallback::Execute(class vtkObject *,unsigned long,void *)" (?Execute@FPSCallback@PCLVisualizer@visualization@pcl@@UEAAXPEAVvtkObject@@KPEAX@Z) Error LNK2019 unresolved external symbol deflate referenced in function "protected: int __cdecl boost::iostreams::detail::zlib_base::xdeflate(int)" (?xdeflate@zlib_base@detail@iostreams@boost@@IEAAHH@Z) Error LNK2019 unresolved external symbol deflateEnd referenced in function "protected: void __cdecl boost::iostreams::detail::zlib_base::reset(bool,bool)" (?reset@zlib_base@detail@iostreams@boost@@IEAAX_N0@Z) Error LNK2019 unresolved external symbol inflate referenced in function "protected: int __cdecl boost::iostreams::detail::zlib_base::xinflate(int)" (?xinflate@zlib_base@detail@iostreams@boost@@IEAAHH@Z) Error LNK2019 unresolved external symbol inflateEnd referenced in function "protected: void __cdecl boost::iostreams::detail::zlib_base::reset(bool,bool)" (?reset@zlib_base@detail@iostreams@boost@@IEAAX_N0@Z) Error LNK2019 unresolved external symbol deflateReset referenced in function "protected: void __cdecl boost::iostreams::detail::zlib_base::reset(bool,bool)" (?reset@zlib_base@detail@iostreams@boost@@IEAAX_N0@Z) Error LNK2019 unresolved external symbol inflateReset referenced in function "protected: void __cdecl boost::iostreams::detail::zlib_base::reset(bool,bool)" (?reset@zlib_base@detail@iostreams@boost@@IEAAX_N0@Z) Error LNK2019 unresolved external symbol crc32 referenced in function "protected: void __cdecl boost::iostreams::detail::zlib_base::after(char const * &,char * &,bool)" (?after@zlib_base@detail@iostreams@boost@@IEAAXAEAPEBDAEAPEAD_N@Z) Error LNK2019 unresolved external symbol deflateInit2_ referenced in function "private: void __cdecl boost::iostreams::detail::zlib_base::do_init(struct boost::iostreams::zlib_params const &,bool,void * (__cdecl*)(void *,unsigned int,unsigned int),void (__cdecl*)(void *,void *),void *)" (?do_init@zlib_base@detail@iostreams@boost@@AEAAXAEBUzlib_params@34@_NP6APEAXPEAXII@ZP6AX22@Z2@Z) Error LNK2019 unresolved external symbol inflateInit2_ referenced in function "private: void __cdecl boost::iostreams::detail::zlib_base::do_init(struct boost::iostreams::zlib_params const &,bool,void * (__cdecl*)(void *,unsigned int,unsigned int),void (__cdecl*)(void *,void *),void *)" (?do_init@zlib_base@detail@iostreams@boost@@AEAAXAEBUzlib_params@34@_NP6APEAXPEAXII@ZP6AX22@Z2@Z) 错误LNK2005“受保护:虚拟无效\uuu cdecl pcl::抓取器::信号更改(无效)”(?signalsChanged@Grabber@pcl@@meaaxz)已在pcl_io_debug.lib(pcl_io_debug.dll)中定义 错误LNK2005“受保护:虚拟无效\uuu cdecl pcl::抓取器::信号更改(无效)”(?signalsChanged@Grabber@pcl@@meaaxz)已在pcl_io_debug.lib(pcl_io_debug.dll)中定义 错误LNK2001未解析的外部符号“public:virtual void uu cdecl pcl::visualization::PCLVisualizer::FPSCallback::Execute(类vtkObject*,无符号长,void*)”(?Execute@FPSCallback@PCLVisualizer@visualization@pcl@@UEAAxpeavvvtkobject@@KPEAX@Z) 函数“protected:int uu cdecl boost::iostreams::detail::zlib_base::xdeflate(int)”中引用了错误LNK2019未解析的外部符号deflate(?xdeflate@zlib_base@detail@iostreams@促进@@IEAAHH@Z) 函数“protected:void u cdecl boost::iostreams::detail::zlib_base::reset(bool,bool)”中引用了错误LNK2019未解析的外部符号deflateEnd(?reset@zlib_base@detail@iostreams@boost@@IEAAX_N0@Z) 函数“protected:int\u cdecl boost::iostreams::detail::zlib\u base::xinflate(int)”中引用了错误LNK2019未解析的外部符号膨胀(?xinflate@zlib_base@detail@iostreams@促进@@IEAAHH@Z) 函数“protected:void u cdecl boost::iostreams::detail::zlib_base::reset(bool,bool)”中引用的错误LNK2019未解析外部符号膨胀(?reset@zlib_base@detail@iostreams@boost@@IEAAX_N0@Z) 函数“protected:void u cdecl boost::iostreams::detail::zlib_base::reset(bool,bool)”中引用了错误LNK2019未解析的外部符号deflateReset(?reset@zlib_base@detail@iostreams@boost@@IEAAX_N0@Z) 函数“protected:void u cdecl boost::iostreams::detail::zlib_base::reset(bool,bool)”中引用了错误LNK2019未解析的外部符号充气设置(?reset@zlib_base@detail@iostreams@boost@@IEAAX_N0@Z) 函数“protected:void\uu cdecl boost::iostreams::detail::zlib_base::after(char const*&,char*&,bool)”中引用了错误LNK2019未解析的外部符号crc32(?after@zlib_base@detail@iostreams@boost@@IEAAXAEAEBDAEAPEAD_N@Z) 函数“private:void u cdecl boost::iostreams::detail::zlib_base::do_init(struct boost::iostreams::zlib_参数const&,bool,void*(u cdecl*)(void*,unsigned int,unsigned int),void(u cdecl*)(void*,void*),void*中引用错误LNK2019(?做_init@zlib_base@detail@iostreams@boost@@AEAAXAEBUzlib_params@34@_NP6APEAXPEAXII@ZP6AX22@Z2@Z) 函数“private:void u cdecl boost::iostreams::detail::zlib_base::do_init(struct boost::iostreams::zlib_参数const&,bool,void*(u cdecl*)(void*,unsigned int,unsigned int),void(u cdecl*)(void*,void*),void*中引用错误LNK2019(?做_init@zlib_base@detail@iostreams@boost@@AEAAXAEBUzlib_params@34@_NP6APEAXPEAXII@ZP6AX22@Z2@Z)

构建c+时未解决的外部问题+;使用boost的预开发库的包装器 我编写了一个使用C++中的PCL和Boost的库。它正在完美地建造。当我试图用C++/CLR为它做一个包装器时,我得到了很多未解决的错误。 首先,为什么VisualStudio在构建包装器时要重新构建我的库? 其次,我为什么会出现以下未解决的错误 Error LNK2005 "protected: virtual void __cdecl pcl::Grabber::signalsChanged(void)" (?signalsChanged@Grabber@pcl@@MEAAXXZ) already defined in pcl_io_debug.lib(pcl_io_debug.dll) Error LNK2005 "protected: virtual void __cdecl pcl::Grabber::signalsChanged(void)" (?signalsChanged@Grabber@pcl@@MEAAXXZ) already defined in pcl_io_debug.lib(pcl_io_debug.dll) Error LNK2001 unresolved external symbol "public: virtual void __cdecl pcl::visualization::PCLVisualizer::FPSCallback::Execute(class vtkObject *,unsigned long,void *)" (?Execute@FPSCallback@PCLVisualizer@visualization@pcl@@UEAAXPEAVvtkObject@@KPEAX@Z) Error LNK2019 unresolved external symbol deflate referenced in function "protected: int __cdecl boost::iostreams::detail::zlib_base::xdeflate(int)" (?xdeflate@zlib_base@detail@iostreams@boost@@IEAAHH@Z) Error LNK2019 unresolved external symbol deflateEnd referenced in function "protected: void __cdecl boost::iostreams::detail::zlib_base::reset(bool,bool)" (?reset@zlib_base@detail@iostreams@boost@@IEAAX_N0@Z) Error LNK2019 unresolved external symbol inflate referenced in function "protected: int __cdecl boost::iostreams::detail::zlib_base::xinflate(int)" (?xinflate@zlib_base@detail@iostreams@boost@@IEAAHH@Z) Error LNK2019 unresolved external symbol inflateEnd referenced in function "protected: void __cdecl boost::iostreams::detail::zlib_base::reset(bool,bool)" (?reset@zlib_base@detail@iostreams@boost@@IEAAX_N0@Z) Error LNK2019 unresolved external symbol deflateReset referenced in function "protected: void __cdecl boost::iostreams::detail::zlib_base::reset(bool,bool)" (?reset@zlib_base@detail@iostreams@boost@@IEAAX_N0@Z) Error LNK2019 unresolved external symbol inflateReset referenced in function "protected: void __cdecl boost::iostreams::detail::zlib_base::reset(bool,bool)" (?reset@zlib_base@detail@iostreams@boost@@IEAAX_N0@Z) Error LNK2019 unresolved external symbol crc32 referenced in function "protected: void __cdecl boost::iostreams::detail::zlib_base::after(char const * &,char * &,bool)" (?after@zlib_base@detail@iostreams@boost@@IEAAXAEAPEBDAEAPEAD_N@Z) Error LNK2019 unresolved external symbol deflateInit2_ referenced in function "private: void __cdecl boost::iostreams::detail::zlib_base::do_init(struct boost::iostreams::zlib_params const &,bool,void * (__cdecl*)(void *,unsigned int,unsigned int),void (__cdecl*)(void *,void *),void *)" (?do_init@zlib_base@detail@iostreams@boost@@AEAAXAEBUzlib_params@34@_NP6APEAXPEAXII@ZP6AX22@Z2@Z) Error LNK2019 unresolved external symbol inflateInit2_ referenced in function "private: void __cdecl boost::iostreams::detail::zlib_base::do_init(struct boost::iostreams::zlib_params const &,bool,void * (__cdecl*)(void *,unsigned int,unsigned int),void (__cdecl*)(void *,void *),void *)" (?do_init@zlib_base@detail@iostreams@boost@@AEAAXAEBUzlib_params@34@_NP6APEAXPEAXII@ZP6AX22@Z2@Z) 错误LNK2005“受保护:虚拟无效\uuu cdecl pcl::抓取器::信号更改(无效)”(?signalsChanged@Grabber@pcl@@meaaxz)已在pcl_io_debug.lib(pcl_io_debug.dll)中定义 错误LNK2005“受保护:虚拟无效\uuu cdecl pcl::抓取器::信号更改(无效)”(?signalsChanged@Grabber@pcl@@meaaxz)已在pcl_io_debug.lib(pcl_io_debug.dll)中定义 错误LNK2001未解析的外部符号“public:virtual void uu cdecl pcl::visualization::PCLVisualizer::FPSCallback::Execute(类vtkObject*,无符号长,void*)”(?Execute@FPSCallback@PCLVisualizer@visualization@pcl@@UEAAxpeavvvtkobject@@KPEAX@Z) 函数“protected:int uu cdecl boost::iostreams::detail::zlib_base::xdeflate(int)”中引用了错误LNK2019未解析的外部符号deflate(?xdeflate@zlib_base@detail@iostreams@促进@@IEAAHH@Z) 函数“protected:void u cdecl boost::iostreams::detail::zlib_base::reset(bool,bool)”中引用了错误LNK2019未解析的外部符号deflateEnd(?reset@zlib_base@detail@iostreams@boost@@IEAAX_N0@Z) 函数“protected:int\u cdecl boost::iostreams::detail::zlib\u base::xinflate(int)”中引用了错误LNK2019未解析的外部符号膨胀(?xinflate@zlib_base@detail@iostreams@促进@@IEAAHH@Z) 函数“protected:void u cdecl boost::iostreams::detail::zlib_base::reset(bool,bool)”中引用的错误LNK2019未解析外部符号膨胀(?reset@zlib_base@detail@iostreams@boost@@IEAAX_N0@Z) 函数“protected:void u cdecl boost::iostreams::detail::zlib_base::reset(bool,bool)”中引用了错误LNK2019未解析的外部符号deflateReset(?reset@zlib_base@detail@iostreams@boost@@IEAAX_N0@Z) 函数“protected:void u cdecl boost::iostreams::detail::zlib_base::reset(bool,bool)”中引用了错误LNK2019未解析的外部符号充气设置(?reset@zlib_base@detail@iostreams@boost@@IEAAX_N0@Z) 函数“protected:void\uu cdecl boost::iostreams::detail::zlib_base::after(char const*&,char*&,bool)”中引用了错误LNK2019未解析的外部符号crc32(?after@zlib_base@detail@iostreams@boost@@IEAAXAEAEBDAEAPEAD_N@Z) 函数“private:void u cdecl boost::iostreams::detail::zlib_base::do_init(struct boost::iostreams::zlib_参数const&,bool,void*(u cdecl*)(void*,unsigned int,unsigned int),void(u cdecl*)(void*,void*),void*中引用错误LNK2019(?做_init@zlib_base@detail@iostreams@boost@@AEAAXAEBUzlib_params@34@_NP6APEAXPEAXII@ZP6AX22@Z2@Z) 函数“private:void u cdecl boost::iostreams::detail::zlib_base::do_init(struct boost::iostreams::zlib_参数const&,bool,void*(u cdecl*)(void*,unsigned int,unsigned int),void(u cdecl*)(void*,void*),void*中引用错误LNK2019(?做_init@zlib_base@detail@iostreams@boost@@AEAAXAEBUzlib_params@34@_NP6APEAXPEAXII@ZP6AX22@Z2@Z),c++,boost,c++-cli,wrapper,point-cloud-library,C++,Boost,C++ Cli,Wrapper,Point Cloud Library,C++-CLI是一种不同的语言;它编译到一个完全不同的目标(某些.NET运行时版本/体系结构),这就是它再次生成的原因,也是您需要为这些目标配置配置链接依赖项的原因 我个人会将所有本机依赖项保存在一个本机DLL中,并在混合模式程序集中实现一个狭窄的接口。这样,您就可以将混合模式程序集的依赖项总结为绑定任何其他本机依赖项的一个本机DLL。实际上,我刚刚使用了BOOST\u IOSTREAMS\u NO\u LIB,并且修复了问题之一。 所以在我看来,windows中的bzip2过滤器有一个问题,因

C++-CLI是一种不同的语言;它编译到一个完全不同的目标(某些.NET运行时版本/体系结构),这就是它再次生成的原因,也是您需要为这些目标配置配置链接依赖项的原因


我个人会将所有本机依赖项保存在一个本机DLL中,并在混合模式程序集中实现一个狭窄的接口。这样,您就可以将混合模式程序集的依赖项总结为绑定任何其他本机依赖项的一个本机DLL。

实际上,我刚刚使用了BOOST\u IOSTREAMS\u NO\u LIB,并且修复了问题之一。 所以在我看来,windows中的bzip2过滤器有一个问题,因为默认情况下它应该被禁用,而这通常会禁用它们。
对于与visualizer相关的其他问题,我找到了答案

实际上我在包装器项目中没有包含任何本机依赖项。在包装器中,我只是从我在本机dll中创建的类中创建一个对象,并从该类中调用两个函数。那么,为什么从一开始我就觉得这些错误。你有什么线索吗?e错误消息清楚地表明:您依赖于libz2、PCL可视化和抓取器。这些显然是本机依赖项,并且不存在。您可以随时按次使用来查找源代码