好的,这可能是非常基本的,但我找不到问题。我正在尝试使用 -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
$>
gcc 在做什么,g++ 似乎无法做对?