У нас есть довольно большая библиотека c ++, которую мы упаковали в расширение Adobe Flex для использования нашими пользователями Flex. Мы упаковываем это ANE для нескольких платформ, включая Mac OS и iOS. На Mac все хорошо, когда мы строим, используя устаревшую стандартную библиотеку C ++ (libstdc++
). Конечно, мы не хотим оставаться с устаревшей неподдерживаемой библиотекой, и мы переключились на текущую libc++
, Библиотека (.a файл) прекрасно работает таким же образом, как и нативные приложения iOS, которые вызывают эту библиотеку.
Тем не менее adt
Инструмент Adobe, который создает ANE, теперь выходит из строя без полезного сообщения об ошибке (не запускайте меня по качеству инструментов Adobe). Некоторые хитрости с процессами Unix позволяют нам выяснить, что adt
вызывает компоновщик ОС ld
, Тиражирование одинаковое ld
вызов позволил нам выяснить, что компоновщик жалуется на большое количество неопределенных символов, все (или, возможно, большинство) являются стандартными символами библиотеки C ++.
Действительно, что ld
вызов использует в качестве параметра -lstdc++
который относится к устаревшей библиотеке. Я полагаю, что использование libc ++ подразумевает lc++
аргумент. Однако, пытаясь такой модифицированный ld
не удалось из-за (по-видимому) не связанных проблем каталога.
Так есть ли способ сказать adt
что наша библиотека .a использует текущую стандартную библиотеку C ++, а не устаревшую? Есть ли разумный обходной путь для этого adt
ограничение? В целом, есть ли способ убедить adt
(и Flex Builder в целом) не перехватывать и есть сообщения об ошибках инструментов?
Любое предложение приветствуется. Это использует Xcode 4.5.1.
в platformoptions.xml
файл для цели iPhone-ARM, попробуйте добавить -lc++
вариант. Т.е. минимальный platformoptions.xml
файл будет выглядеть так:
<platform xmlns="http://ns.adobe.com/air/extension/3.1">
<sdkVersion>4.0.0</sdkVersion>
<linkerOptions>
<option>-lc++</option>
</linkerOptions>
</platform>
Ваша команда сборки будет выглядеть примерно так:
adt -package -target ane Output.ane extension.xml -swc anelib.swc -platform iPhone-ARM -C ios . -platformoptions platformoptions.xml
Других решений пока нет …