OK、これはおそらく非常に基本的なものですが、問題が見つかりません。-lyajl を使用して、C++ プログラムを C 共有ライブラリ (名前を付けるには YAJL) にリンクしようとしています。リンカはそれを見つけたように見えますが (それについて不平を言うことはありません)、コードで使用しているシンボルを見つけることができません:
$> g++ test.c -lyajl
Undefined symbols for architecture x86_64:
"yajl_tree_parse(char const*, char*, unsigned long)", referenced from:
_main in ccEqsAaJ.o
"yajl_tree_get(yajl_val_s*, char const**, yajl_type)", referenced from:
_main in ccEqsAaJ.o
"yajl_tree_free(yajl_val_s*)", referenced from:
_main in ccEqsAaJ.o
ld: symbol(s) not found for architecture x86_64
collect2: ld returned 1 exit status
$>
動作を分離するために最小限の test.c ファイルを作成しました。非常に奇妙なのは、gcc がコードに完全に問題ないように見えることです (ちなみに、test.c は単なる C コードであり、ここには C++ の機能はありません)。
$> gcc test.c -lyajl
$>
g++ が正しく実行できないと思われる gcc の動作は何ですか?