簡體   English   中英

如何鏈接cpp-netlib

[英]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-urilibcppnetlib-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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM