首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何链接cpp-netlib

如何链接cpp-netlib
EN

Stack Overflow用户
提问于 2013-02-25 02:51:49
回答 3查看 5.7K关注 0票数 12

我想为一个C++项目使用cpp-netlib库。因此,我在homebrew (操作系统是MacOSX10.8)的帮助下安装了boost库。然后我从项目主页下载了cpp-netlib,使用cmake为g++创建了Makefile,并成功地应用了make。"make test“通过了所有的测试。然后,我将cpp-netlib的include文件夹复制到boost目录中。

因此,问题开始了:我试图编译文档的第一个示例http-client,但无法使其正常工作。当我使用

代码语言:javascript
复制
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

我收到了这些链接器错误:

代码语言:javascript
复制
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

我真的使用了搜索功能,但我找不到任何解决我的问题的方法。我做错了什么?

非常感谢!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-02-25 05:37:56

在构建cpp-netlib (>=0.9.3)之后,应该有3个静态库:

代码语言:javascript
复制
libcppnetlib-client-connections.a
libcppnetlib-server-parsers.a
libcppnetlib-uri.a

在构建http-client项目时,您应该为cpp-netlib (-L)指定一个库路径,并指定用于链接(-l)的库路径:cppnetlib-urilibcppnetlib-client-connections

票数 9
EN

Stack Overflow用户

发布于 2015-05-26 06:49:42

以下是对我起作用的方法。您将需要修改某些部分,以处理不同版本的boost、不同的安装路径等。

代码语言:javascript
复制
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

票数 2
EN

Stack Overflow用户

发布于 2014-03-07 13:11:21

如果有人在使用visual studio时遇到同样的问题,请将库输入提供给链接器。

项目属性>链接器>输入>

代码语言:javascript
复制
libcppnetlib-client-connectionsd.lib
libcppnetlib-urid.lib

对于Debug配置和

代码语言:javascript
复制
libcppnetlib-client-connections.lib
libcppnetlib-uri.lib

用于发布配置。

在此处指定库路径,

项目属性>链接器>常规>附加包含目录

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15055298

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档