ios — статическое объединение библиотек C ++

Я создал платформу iOS с комбинированной универсальной статической библиотекой C ++ из Poco источники с помощью lipo а также libtool, По сути, то, что я делаю, это:

compile Poco for iPhoneOS and iPhoneSimulator

for each architecture:
libtool -static -o libPoco.a libPocoFoundation.a libPocoNet.a libPocoJSON.a

lipo armv6/libPoco.a armv7/libPoco.a i386/libPoco.a -create -output universal/libPoco.a

create a framework from the generated fat library and includes

смотреть на besport / PocoMobile для дополнительной информации.

Теперь я попытался использовать этот фреймворк в приложении, и все звучало нормально. Но когда я пытаюсь использовать класс из Poco, компоновщик выдает неопределенные символы из Poco и libstdc ++:

Undefined symbols for architecture i386:
"Poco::format(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, Poco::Any const&)", referenced from:
Poco::Logger::warning(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, Poco::Any const&) in MapStorage.o
"Poco::Message::Message(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, Poco::Message::Priority)", referenced from:
Poco::Logger::log(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, Poco::Message::Priority) in MapStorage.o
"std::string::c_str() const", referenced from:
Poco::ProcessImpl::launchByForkExecImpl(std::string const&, std::vector<std::string, std::allocator<std::string> > const&, std::string const&, Poco::Pipe*, Poco::Pipe*, Poco::Pipe*, std::map<std::string, std::string, std::less<std::string>, std::allocator<std::pair<std::string const, std::string> > > const&) in Poco(Process.o)
Poco::EnvironmentImpl::setImpl(std::string const&, std::string const&) in Poco(Environment.o)
Poco::EnvironmentImpl::hasImpl(std::string const&) in Poco(Environment.o)
Poco::EnvironmentImpl::getImpl(std::string const&) in Poco(Environment.o)
"std::string::empty() const", referenced from:
...

Я проверил с nm а также libtool -infoи файл библиотеки, похоже, содержит нужные функции. Файлы Objective-C ++, которые у меня есть в проекте, также хорошо компилируются, если я ничего не делаю с Poco.

  • Должно ли это делать библиотеки, являющиеся библиотеками C ++? Любой флаг компилятора мне нужно включить?
  • Можно libtool -static на самом деле использовать библиотеки .a? Я делаю это правильно?

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]