2015-08-22 6 views
4

Я создал приложение Native-Activity для Android в Visual Studio 2015. Если я просто запустил пример кода, приложение работает. Однако я хочу использовать и внешнюю библиотеку в своем приложении. Для этого, я следующее:связывание библиотеки с приложением android ndk в visual studio 2015

  1. Добавить включаемые каталог в C/C++ -> Общие-> Additional Include Directories
  2. Добавьте Lib/путь х86 Linker-> общ-> Дополнительные каталоги библиотек
  3. Добавить имя библиотеки в Linker-> Вход-> зависимости библиотеки

с этими настройками я могу использовать некоторые библиотеки коды в моем проекте и получить его компиляцию. Если, например, я должен опустить библиотечный каталог, компилятор жалуется на нереализованные функции.

Но если я запустил сгенерированный apk на эмуляторе или Android-телефоне, он мгновенно сработает, даже до того, как ударит точка останова.

Даже если я фактически не использую библиотеку (закомментируйте весь мой собственный код), но просто свяжите ее, приложение выйдет из строя.

Один ключ, который у меня есть, даже если библиотека используется для компиляции приложения, она не копируется в файл apk. Я распаковал apk, и он включает в себя 2 файла в lib \ x86: gdbserver и libAndroid1.so (который является скомпилированной версией моего собственного действия). Но библиотека, которую я связал, просто не существует.

Я предполагаю, что я должен указать где-нибудь в проекте, что я хочу, чтобы моя библиотека была включена в apk, но где я это делаю?

+0

_ "он включает 2 файла в lib \ x86" _. Итак, просто чтобы убедиться: ваш Android-телефон и AVD, которые вы создали для использования в эмуляторе, являются x86-based? – Michael

+0

нет, телефон ARM-based. VS генерирует два файла apk: по одному для каждой платформы. Это зависит от того, какую конфигурацию я выбираю, когда компилирую и запускаю. ARM apk содержит те же файлы, но в lib \ armeabi-v7a. – yvanvds

+0

Можете ли вы поделиться журналом Android Logcat с проблемой, с которой вы столкнулись? –

ответ

0

Шаг 2 должен быть на самом деле: Добавить в Lib \ $ (Platform) путь к Linker-> Общие-> Дополнительные каталоги библиотек

Я сомневаюсь, что ваш Android устройство работает под управлением x86 (если он не находится в эмуляторе) , $ (Конфигурация) автоматически разрешит Debug или Release, а $ (Платформа) автоматически разрешит ARM, ARM64, x86 и т. Д.

Имейте отдельную папку для каждой библиотеки.

Смежные вопросы