首页 > 其他 > 详细

colmap编译过程中出现,无法解析的外部符号错误 “__cdecl google::base::CheckOpMessageBuilder::ForVar1(void)”

时间:2019-11-14 00:59:56      阅读:409      评论:0      收藏:0      [点我收藏+]

错误提示:

1>colmap.lib(matching.obj) : error LNK2019: 无法解析的外部符号 "__declspec(dllimport) public: class std::basic_ostream<char,struct std::char_traits<char> > * __cdecl google::base::CheckOpMessageBuilder::ForVar1(void)" (__imp_?ForVar1@CheckOpMessageBuilder@base@google@@QEAAPEAV?$basic_ostream@DU?$char_traits@D@std@@@std@@XZ),该符号在函数 "private: virtual void __cdecl colmap::TransitiveFeatureMatcher::Run(void)" (?Run@TransitiveFeatureMatcher@colmap@@EEAAXXZ) 中被引用
1>colmap.lib(graph_cut.obj) : error LNK2001: 无法解析的外部符号 "__declspec(dllimport) public: class std::basic_ostream<char,struct std::char_traits<char> > * __cdecl google::base::CheckOpMessageBuilder::ForVar1(void)" (__imp_?ForVar1@CheckOpMessageBuilder@base@google@@QEAAPEAV?$basic_ostream@DU?$char_traits@D@std@@@std@@XZ)

 具体为,链接时,出现无法解析的外部符号:

class std::basic_ostream<char,struct std::char_traits<char> > * __cdecl google::base::CheckOpMessageBuilder::ForVar1(void)" 
(__imp_?ForVar1@CheckOpMessageBuilder@base@google@@QEAAPEAV?$basic_ostream@DU?$char_traits@D@std@@@std@@XZ)

解决方法:

 在引用google::base::CheckOpMessageBuilder::ForVar1(void)这个函数的库、EXE的预处理上定义:

GOOGLE_GLOG_DLL_DECL=

  对于colmap项目来说,就是在colmap库,colmap_exe项目上,分别添加。

 技术分享图片

 

 

总结:

如果有一个解决方案,里面有A, B, Z三个项目,A,  B为库,Z为EXE, B, Z 分别引用了第三方的库glob。则在添加预定义的 GOOGLE_GLOG_DLL_DECL= 时,B, Z均需添加。

而且,在编译过程中,B不会出现编译错误,在生成.lib时也不会报错错误,但当Z链接A, B 生成二进制可执行文件时,才会报错。

 

 

 

参考:

安装ceres-solver win10遇到Eigen安装的问题woodseye,18.8

 

colmap编译过程中出现,无法解析的外部符号错误 “__cdecl google::base::CheckOpMessageBuilder::ForVar1(void)”

原文:https://www.cnblogs.com/arxive/p/11854217.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!