2015-03-20 2 views
0

Я просмотрел другие подобные вопросы по этой теме, и я думаю, что есть что-то OSX-специфическое, которого я пропускаю.Как я могу статически связать библиотеку C++ с приложением C в OSX?

Я пытаюсь статически связать вилку Basho от LevelDB с моим приложением C (поскольку упакованные версии LevelDB будут использовать основную линию Google). Даже при использовании C++ компоновщика и добавление -lC++ в командной строку, я все еще получаю залит ошибкой об отсутствии C++ символов STL, такие как:

«станд :: строка :: _ Rep :: _ M_destroy (станд :: распределитель Const &)», ссылки из: _leveldb_open в libleveldb.a (со)

странная вещь, я знаю, что у меня есть C++ бит включен правильно, потому что я также ссылки на libsnappy, и, прежде чем я добавлена ​​директива link, были неразрешенные символы libsnappy (очевидно), которые теперь очищены.

Насколько я знаю, у меня есть последняя версия xcode & остальная часть цепочки компилятора. libleveldb также скомпилирован с использованием той же инструментальной цепочки, что и мое обычное приложение. Вот командная строка Пытаюсь:

/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++ -g -Wl, -search_paths_first -Wl, -headerpad_max_install_names CMakeFiles/get_rid_status.dir/get_rid_status.co -o get_rid_status /usr/local/lib/libdb.a /usr/lib/libssl.dylib /usr/lib/libcrypto.dylib /usr/lib/libaprutil-1. dylib /usr/lib/libapr-1.dylib -lpthread -ldl -lm -lz LevelDB/libleveldb.a /usr/local/lib/libsnappy.dylib -lC++

Я связь с с ++ и добавление стандартной библиотеки C++ с -lC++ безрезультатно.

ОБНОВЛЕНИЕ Нашли правильный ответ, который можно найти ниже. Престижность пользователям, которые сказали мне правильный этикет, когда я изначально отвечал на мой собственный вопрос здесь.

+2

Вы должны ответить на вопрос самостоятельно и принять его. – Zaxter

+2

Вы можете оставить это сообщение, но удалите свое решение и отправьте его как * ответ *. –

ответ

0

Оказывается, leveldb добавляет некоторые дополнительные флаги компоновщика, которые я не заметил вначале. Претендент -mmacosx-version-min=10.8. Добавление этого флага к шагу ссылки моего приложения C получило все, чтобы выстроиться в очередь.

+0

Можете ли вы опубликовать полную командную строку ссылки? Я добавил, что все еще получаю ошибки связи. – PerilousApricot