首页 文章

为使用boost的预开发库构建c包装器时未解决的外部问题

提问于
浏览
0

我写了一个在C中使用PCL和boost的库 . 它正在建设完美 . 当我尝试使用C / CLR为它创建一个包装器时,我遇到了很多未解决的错误 . 首先,为什么Visual Studio在构建包装器时会重新构建我的库?其次,为什么我得到以下未解决的错误?:

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)

2 回答

  • 0

    实际上我刚刚使用了BOOST_IOSTREAMS_NO_LIB,这解决了大部分问题 . 所以在我看来,windows中的bzip2过滤器存在问题,因为它应该在默认情况下被禁用,并且主要禁用它们 . 对于与可视化工具相关的其他问题,我找到了答案here

  • 1

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

    我个人将所有本机依赖项保留在本机DLL中,并在混合模式程序集中实现一个窄接口 . 这样,您可以将混合模式程序集的依赖关系概括为捆绑任何其他本机依赖关系的一个本机DLL .

相关问题