<转>关于 error LNK2019:无法解析的外部符号 ,该符号在函数**中被引用的思考
错误提示信息摘抄如下:
--------------------------------------------------------------------------------------------------
错误 12 error LNK2019: 无法解析的外部符号 __imp__UuidFromStringA@8, 该符号在函数"public: class activemq::util::Guid & __thiscall activemq::util::Guid::operator=(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &)" (??4Guid@util@activemq@@QAEAAV012@ABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z)中被引用 r:\XBROADCAST2.8\MQ_SRC\SendingTerminal-Rec\libactivemq-cppd.lib 1
--------------------------------------------------------------------------------------------------
错误 7 error LNK2019: 无法解析的外部符号 __imp__UuidCreateNil@4,该 符号在函数 "public: __thiscall activemq::util::Guid::Guid(void)" (??0Guid@util@activemq@@QAE@XZ) 中被引用 r:\XBROADCAST2.8\MQ_SRC\SendingTerminal-Rec\libactivemq-cppd.lib 1
--------------------------------------------------------------------------------------------------
在编译同事A的源代码时,发现有如上几个问题,折腾了半天,在同事B的帮助下艰难的搞定,今天在此总结一下:
(1) 这是个链接问题,跟源代码没有任何问题。这样问题范围就缩小了很多。
(2) 链接问题,主要有头文件包含和Lib库包含问题。
头文件包含:代码引用到了这个函数,而没有包含此函数的头文件。
lib库包含:缺少必要的lib(我的工程是这样,需要耐心去比对,去看错误信息);工程本身包含的Lib库不是最新的,需要更新,或者链接到其他地方的Lib库。
(3) 最可恶的地方就是,包含头文件的代码中引用了其他lib库,这个最难发现了。
信念
2012.01.17