编译cpp-netlib v0.9时未解决的外部符号错误

时间:2011-07-15 11:51:12

标签: c++ visual-c++ boost cpp-netlib

我正在尝试从Visual Studio 2010构建cpp-netlib库但是出现以下链接器错误:

  

错误LNK2019:未解析的外部符号“bool __cdecl   提高::网络:: URI ::详细:: parse_uri_impl(类   boost :: iterator_range,class std :: allocator> > &安培;,结构   boost :: network :: uri :: detail :: uri_parts_default_base&,struct   提高::网络::标签:: default_string)”   (?parse_uri_impl @细节@ URI @网络@ @@升压YA_NAAV?$ @ iterator_range的V'$ _ St​​ring_const_iterator @ DU?$ char_traits @ d @ @@ STD V'$分配器@ d @ @@ 2 STD @@@ 4 @ AAUuri_parts_default_base @ 1234 @ Udefault_string @标记@ 34 @@ Z)   在函数“bool __cdecl中引用   提高::网络:: URI ::详细:: parse_uri,类   std :: allocator&gt ;, struct   升压::网络:: HTTP ::标签:: http_default_8bit_tcp_resolve>(类   的std :: basic_string的,类   std :: allocator> &安培;,结构   boost :: network :: uri :: detail :: uri_parts&)“   (?? $ parse_uri @ V'$ basic_string的@ DU?$ char_traits @ d @ @@ STD V'$分配器@ d @ @@ 2 STD @@ @ Uhttp_default_8bit_tcp_resolve标签@ HTTP @网络@升压@@@细节@ URI @网络@升压@@ YA_NAAV?$ @的basic_string杜?$ @ char_traits @ d @@性病V'$ @分配器@ d @@ 2性病@@ AAU?$ @ uri_parts @ Uhttp_default_8bit_tcp_resolve标签@ HTTP // @网升压@@@ 0123 @@ Z)

有点挖掘,这可能与我使用的Boost版本(1.46.1)有关,但我尝试对1.47.0和1.45.0进行编译并得到相同的错误。< / p>

让这个库编译需要什么?

1 个答案:

答案 0 :(得分:3)

经过大量搜索,我发现this帖子和this来自图书馆的创建者,提到:

  
      
  1. 关闭所需外部库以与宏链接的选项(BOOST_NETWORK_NO_LIB)。用这个宏定义之前   任何cpp-netlib头都包含在(或在命令行上)   在命名空间中创建extern或只是自由函数的函数   级别标记为“内联”并将其定义拉入   因此,在每个翻译单位。这解决了Jeff Garland的问题   和其他人在使用时需要外部库   cpp-netlib,它始终只有标题,直到0.9。我仍然   挣扎于制作仅头部行为的想法   默认,但我没有嫁给“默认的外部库”   决定。
  2.   

如果我在cpp-netlib标题之前添加宏定义,我可以编译,如下所示:

#define BOOST_NETWORK_NO_LIB

#include <boost/network/protocol/http/client.hpp>

在第二篇文章中,我发现还提到“你需要构建/链接uri库”,听起来这可能是一个更好的解决方案。

不幸的是,我对c ++和boost的了解不是最好的,所以我只是选择了有效的方法。

欢迎任何更好的方法,尽管我真正想做的就是编译库以便我可以对它进行实际评估,所以我现在很开心。