2013-10-26 55 views
1

由於最近更新小牛隊,我有一個問題鏈接庫json_spirit。未定義的符號與JSON精靈和Os X小牛隊

我安裝了新的命令行工具,但我使用的是通過macports安裝的gcc47。 Json spirit(v4.06)已經使用相同的gcc編譯(更新之後)。

gcc (MacPorts gcc47 4.7.3_3) 4.7.3 

我煮下來到下面的例子:

TEST.CPP

#include <iostream> 
#include "json_spirit_reader_template.h" 
#include "json_spirit_writer_template.h" 
#include "json_spirit_writer.h" 

int main(int argc, char **argv) { 
    json_spirit::mValue a; 
    std::string s("[]"); 
    json_spirit::read_string(s, a); 
    std::cout << json_spirit::write_formatted(a) << std::endl; 
    return 0; 
} 

我用下面的編譯:

g++ -I/usr/local/include test.cpp -o test -L/usr/local/lib -ljson_spirit 

,它給這個錯誤:

Undefined symbols for architecture x86_64: 
    "json_spirit::write_formatted(json_spirit::Value_impl<json_spirit::Config_map<std::basic_strin g<char, std::char_traits<char>, std::allocator<char> > > > const&)", referenced from: 
     _main in ccwUclng.o 
ld: symbol(s) not found for architecture x86_64 
collect2: error: ld returned 1 exit status 

最後,使用「nm -g /usr/local/lib/libjson_spirit.a | grep的write_formatted」:

nm: no name list 
0000000000000150 T __ZN11json_spirit15write_formattedERKNS_10Value_implINS_10Config_mapINSt3__112basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEEEEE 
000000000003afa8 S __ZN11json_spirit15write_formattedERKNS_10Value_implINS_10Config_mapINSt3__112basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEEEEE.eh 
0000000000000120 T __ZN11json_spirit15write_formattedERKNS_10Value_implINS_10Config_mapINSt3__112basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEEEEERNS2_13basic_ostreamIcS5_EE 
000000000003af80 S __ZN11json_spirit15write_formattedERKNS_10Value_implINS_10Config_mapINSt3__112basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEEEEERNS2_13basic_ostreamIcS5_EE.eh 
0000000000000270 T __ZN11json_spirit15write_formattedERKNS_10Value_implINS_10Config_mapINSt3__112basic_stringIwNS2_11char_traitsIwEENS2_9allocatorIwEEEEEEEE 
000000000003b118 S __ZN11json_spirit15write_formattedERKNS_10Value_implINS_10Config_mapINSt3__112basic_stringIwNS2_11char_traitsIwEENS2_9allocatorIwEEEEEEEE.eh 
0000000000000240 T __ZN11json_spirit15write_formattedERKNS_10Value_implINS_10Config_mapINSt3__112basic_stringIwNS2_11char_traitsIwEENS2_9allocatorIwEEEEEEEERNS2_13basic_ostreamIwS5_EE 
000000000003b0c8 S __ZN11json_spirit15write_formattedERKNS_10Value_implINS_10Config_mapINSt3__112basic_stringIwNS2_11char_traitsIwEENS2_9allocatorIwEEEEEEEERNS2_13basic_ostreamIwS5_EE.eh 
0000000000000090 T __ZN11json_spirit15write_formattedERKNS_10Value_implINS_13Config_vectorINSt3__112basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEEEEE 
000000000003aeb0 S __ZN11json_spirit15write_formattedERKNS_10Value_implINS_13Config_vectorINSt3__112basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEEEEE.eh 
0000000000000060 T __ZN11json_spirit15write_formattedERKNS_10Value_implINS_13Config_vectorINSt3__112basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEEEEERNS2_13basic_ostreamIcS5_EE 
000000000003ae88 S __ZN11json_spirit15write_formattedERKNS_10Value_implINS_13Config_vectorINSt3__112basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEEEEERNS2_13basic_ostreamIcS5_EE.eh 
0000000000000210 T __ZN11json_spirit15write_formattedERKNS_10Value_implINS_13Config_vectorINSt3__112basic_stringIwNS2_11char_traitsIwEENS2_9allocatorIwEEEEEEEE 
000000000003b0a0 S __ZN11json_spirit15write_formattedERKNS_10Value_implINS_13Config_vectorINSt3__112basic_stringIwNS2_11char_traitsIwEENS2_9allocatorIwEEEEEEEE.eh 
00000000000001e0 T __ZN11json_spirit15write_formattedERKNS_10Value_implINS_13Config_vectorINSt3__112basic_stringIwNS2_11char_traitsIwEENS2_9allocatorIwEEEEEEEERNS2_13basic_ostreamIwS5_EE 
000000000003b078 S __ZN11json_spirit15write_formattedERKNS_10Value_implINS_13Config_vectorINSt3__112basic_stringIwNS2_11char_traitsIwEENS2_9allocatorIwEEEEEEEERNS2_13basic_ostreamIwS5_EE.eh 

我不知道如何讀的納米輸出,所以我可能失去了一些東西明顯

我試圖安裝和卸載的每個組件(升壓..)。一個接一個,從MacPorts的gcc和/或默認,這是編譯:

Configured with: --prefix=/Applications/Xcode.app/Contents/Developer/usr --with-gxx-include-dir=/usr/include/c++/4.2.1 
Apple LLVM version 5.0 (clang-500.2.79) (based on LLVM 3.3svn) 
Target: x86_64-apple-darwin13.0.0 
Thread model: posix 

回答

0

好了,這是一個半的答案,因爲我從來沒有真正得到解釋到底發生了什麼,但我固定它,所以..

答案是重新啓動從頭開始增強(icu以及)與新系統和相同的編譯器無處不在,對我來說它是與macports安裝的gcc 4.7.3。

此外,我試圖從升級1.53升級到升級1.54,所以它可能是問題的一部分,但現在無論如何我回到提升1.53。