高分求解關於gloox 0.9.9.5靜態庫問題


我從網上下載原文件后(0.9.9.5)使用vs2005將編譯類型變為靜態lib后直接編譯成功
但使用那個編譯好的lib寫了個簡單的登陸程序,然后選擇在靜態庫中使用MFC
每次編譯就出現
1>StdAfx.cpp
1>正在編譯...
1>34.cpp
1>g:\work\34\src\clientbase.h(198) : warning C4800: 'const gloox::TLSPolicy' : forcing value to bool 'true' or 'false' (performance warning)
1>g:\work\34\34.cpp(96) : warning C4101: 'szJid' : unreferenced local variable
1>正在鏈接...
1>LIBCMT.lib(invarg.obj) : error LNK2005: __initp_misc_invarg 已經在 LIBCMTD.lib(invarg.obj) 中定義
1>LIBCMT.lib(invarg.obj) : error LNK2005: __invoke_watson 已經在 LIBCMTD.lib(invarg.obj) 中定義
1>LIBCMT.lib(invarg.obj) : error LNK2005: __set_invalid_parameter_handler 已經在 LIBCMTD.lib(invarg.obj) 中定義
1>LIBCMT.lib(invarg.obj) : error LNK2005: __get_invalid_parameter_handler 已經在 LIBCMTD.lib(invarg.obj) 中定義
1>LIBCMT.lib(invarg.obj) : error LNK2005: "void __cdecl _invoke_watson(unsigned short const *,unsigned short const *,unsigned short const *,unsigned int,unsigned int)" (?_invoke_watson@@YAXPBG00II@Z) 已經在 LIBCMTD.lib(invarg.obj) 中定義
1>LIBCMT.lib(invarg.obj) : error LNK2005: __invalid_parameter 已經在 LIBCMTD.lib(invarg.obj) 中定義
1>LIBCMT.lib(invarg.obj) : error LNK2005: "void __cdecl _invalid_parameter(unsigned short const *,unsigned short const *,unsigned short const *,unsigned int,unsigned int)" (?_invalid_parameter@@YAXPBG00II@Z) 已經在 LIBCMTD.lib(invarg.obj) 中定義
1>LIBCMT.lib(invarg.obj) : error LNK2005: ___pInvalidArgHandler 已經在 LIBCMTD.lib(invarg.obj) 中定義
1>   正在創建庫 .\Debug/34.lib 和對象 .\Debug/34.exp
1>LINK : warning LNK4098: 默認庫“LIBCMT”與其他庫的使用沖突;請使用 /NODEFAULTLIB:library
1>LINK : warning LNK4199: 已忽略 /DELAYLOAD:OleAcc.dll;未找到來自 OleAcc.dll 的導入
1>gloox.lib(connectiontcpbase.obj) : error LNK2019: 無法解析的外部符號 ___WSAFDIsSet@8,該符號在函數 "protected: bool __thiscall gloox::ConnectionTCPBase::dataAvailable(int)" (?dataAvailable@ConnectionTCPBase@gloox@@IAE_NH@Z) 中被引用
1>gloox.lib(connectiontcpbase.obj) : error LNK2019: 無法解析的外部符號 _select@20,該符號在函數 "protected: bool __thiscall gloox::ConnectionTCPBase::dataAvailable(int)" (?dataAvailable@ConnectionTCPBase@gloox@@IAE_NH@Z) 中被引用
1>gloox.lib(connectiontcpbase.obj) : error LNK2019: 無法解析的外部符號 _send@16,該符號在函數 "public: virtual bool __thiscall gloox::ConnectionTCPBase::send(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &)" (?send@ConnectionTCPBase@gloox@@UAE_NABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z) 中被引用
1>gloox.lib(connectiontcpclient.obj) : error LNK2019: 無法解析的外部符號 _recv@16,該符號在函數 "public: virtual enum gloox::ConnectionError __thiscall gloox::ConnectionTCPClient::recv(int)" (?recv@ConnectionTCPClient@gloox@@UAE?AW4ConnectionError@2@H@Z) 中被引用
1>gloox.lib(dns.obj) : error LNK2019: 無法解析的外部符號 _closesocket@4,該符號在函數 "public: static void __cdecl gloox::DNS::closeSocket(int)" (?closeSocket@DNS@gloox@@SAXH@Z) 中被引用
1>gloox.lib(dns.obj) : error LNK2019: 無法解析的外部符號 _WSACleanup@0,該符號在函數 "private: static void __cdecl gloox::DNS::cleanup(void)" (?cleanup@DNS@gloox@@CAXXZ) 中被引用
..................


請問是什么原因?謝謝大家

4 个解决方案

#1


用Debug版本的靜態庫放到你的exe的Debug版本中

#2


exe與lib用相同的配置編譯,都用Debug或都用Release。另外再連接Ws2_32.lib,看看還有哪些錯誤。

#3


謝謝 

#4


鏈接ws2_32.lib secur32.lib dnsapi.lib crypt32.lib幾個引入庫

注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2020 ITdaan.com