Использование libc ++ вместо libstdc ++ в собственном расширении Adobe Flex

У нас есть довольно большая библиотека 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.

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

0

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

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