Android, SWIG и двунаправленная связь - PullRequest
1 голос
/ 13 апреля 2011

У меня есть API C ++, который я не могу изменить:

  • выставляет объект (легкий)
  • предоставляет интерфейсы, которые должны быть получены вызывающей стороной (классический шаблон проектирования триггера-слушателя).

Мне удалось обернуть этот API-интерфейс в python, используя SWIG и функцию директора, которая позволяет осуществлять межязыковой вывод. Однако, когда я попытался скомпилировать его с помощью ndk, чтобы показать его на виртуальной машине Dalvik в Android, я обнаружил, что директора в SWIG поддерживаются через RTTI, а Android не поддерживает RTTI.

Есть идеи, как мне обойти это ограничение? По сути, у меня есть простой способ раскрытия моих собственных объектов в Java с использованием JNI и SWIG, но мне нужно иметь возможность запускать свой код Java из собственного кода.

Ответы [ 2 ]

1 голос
/ 18 мая 2011

Android поддерживает RTTI и исключения из NDK r5. Просто добавьте флаги компиляции -fexceptions и -frtti, а также добавьте строку APP_STL := gnustl_static в файл Application.mk.

0 голосов
/ 14 мая 2011

вам нужно написать свой собственный JNI, который не использует RTTI, я боюсь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...