[英]How to link against cpp-netlib
我想將Library cpp-netlib用於C ++項目。 因此我在自制軟件的幫助下安裝了boost庫(操作系統是Mac OS X 10.8)。 然后我從項目主頁下載了cpp-netlib,使用cmake為g ++創建了Makefile並成功應用了make。 “make test”通過了所有測試。 然后我將cpp-netlib的include文件夾復制到boost目錄中。
所以這就是麻煩開始的時候:我試圖編譯文檔的第一個示例http-client,但無法使其工作。 我用的時候
g++ test.cpp -o out -I/usr/local/Cellar/boost/1.53.0/include
-L/usr/local/Cellar/boost/1.53.0/lib
-lboost_system-mt -lboost_filesystem-mt -lboost_thread-mt
我收到了這些鏈接器錯誤:
Undefined symbols for architecture x86_64:
"boost::network::uri::detail::parse(__gnu_cxx::__normal_iterator<char const*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, __gnu_cxx::__normal_iterator<char const*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, boost::network::uri::detail::uri_parts<__gnu_cxx::__normal_iterator<char const*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)", referenced from:
boost::network::uri::uri::parse() in ccs87Dq3.o
"boost::network::http::impl::normal_delegate::normal_delegate(boost::asio::io_service&)", referenced from:
boost::network::http::impl::connection_delegate_factory<boost::network::http::tags::http_async_8bit_udp_resolve>::new_connection_delegate(boost::asio::io_service&, bool, boost::optional<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, boost::optional<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >)in ccs87Dq3.o
ld: symbol(s) not found for architecture x86_64
collect2: ld returned 1 exit status
我真的使用了搜索功能,但我找不到解決問題的方法。 我究竟做錯了什么?
非常感謝!
在構建cpp-netlib(> = 0.9.3)之后,應該有3個靜態庫:
libcppnetlib-client-connections.a
libcppnetlib-server-parsers.a
libcppnetlib-uri.a
構建http-client項目時,應指定cpp-netlib (-L)的庫路徑和鏈接(-l)的庫: cppnetlib-uri
和libcppnetlib-client-connections
。
這對我有用。 您需要修改某些部分以處理不同版本的boost,不同的安裝路徑等。
g++ -o demo \
demo.cpp \
-lcppnetlib-uri \
-lcppnetlib-server-parsers \
-lcppnetlib-client-connections \
-lboost_thread-mt \
-lboost_system-mt \
-lssl \
-lcrypto \
-I/usr/local/include \
-L/usr/local/lib
如果您正在編寫服務器端代碼,那么我想您還需要包含-lcppnetlib-server-parsers
。
如果某人遇到與visual studio相同的問題,請向鏈接器提供庫輸入。
項目屬性>鏈接器>輸入>
libcppnetlib-client-connectionsd.lib
libcppnetlib-urid.lib
用於調試配置和
libcppnetlib-client-connections.lib
libcppnetlib-uri.lib
用於發布配置。
在此處指定庫路徑,
項目屬性>鏈接器>常規>其他包含目錄
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.