В настоящее время я работаю над библиотекой, которая взаимодействует с REST API.Этот API отвечает с помощью объекта JSON, который я анализирую с помощью json-glib-1.0.Поскольку некоторые члены объекта могут не существовать, я хотел использовать функцию get_x_member_with_default класса Json.Object.Хотя и компилятор Vala, и C видят функции, которые компоновщик выдает мне несколько ошибок:
Undefined symbols for architecture x86_64:
"_json_object_get_boolean_member_with_default", referenced from:
_discord_message_construct in message-f5c60f.o
"_json_object_get_int_member_with_default", referenced from:
_discord_message_construct in message-f5c60f.o
"_json_object_get_string_member_with_default", referenced from:
_discord_message_construct in message-f5c60f.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Чтобы воспроизвести это, вы можете попробовать этот код:
void main() {
string json = "{\"one\": 1337}";
Json.Parser parser = new Json.Parser();
parser.load_from_data(json, -1);
int64 val = parser.get_root().get_object().get_int_member_with_default("one", 666);
stdout.printf(@"$val\n");
}
и скомпилировать его сэта команда: valac --pkg json-glib-1.0 file.vala
.Это дает мне
Undefined symbols for architecture x86_64:
"_json_object_get_int_member_with_default", referenced from:
__vala_main in json2-ec99c2.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Это, очевидно, не библиотека;при компиляции моей библиотеки я генерирую только код C, компилирую и связываю все с выводом pkg-config --cflags --libs json-glib-1.0
.Есть ли что-то, что я должен связать дополнительно?