Использовать библиотеку C в Android над NDK

Что я хочу сделать:

Я нашел библиотеку C, которая вычисляет высоту звукового streamа и хочет использовать его в Android.

Я думал, вместо того, чтобы портировать его, я мог бы также использовать его с помощью NDK, верно?

Как это работает? Конечно, я должен установить NDK, а потом? Могу ли я вызвать функции этой библиотеки C так же нормально, как в Android?

Библиотека в C, которую я хочу «импортировать»:

#include "second_c_file.h" #include  #include  #include  #ifndef max #define max(x, y) ((x) > (y)) ? (x) : (y) #endif #ifndef min #define min(x, y) ((x) < (y)) ? (x) : (y) #endif int _power2p(int value) { ... } typedef struct _minmax { int index; struct _minmax *next; } minmax; double _test_calculate(double * var1, int var2, int var3) { ... } 

Файл «second_c_file.h» – это еще один файл, который мне нужно импортировать, очевидно.

Спасибо за вашу помощь!

Здесь можно найти хороший учебник по началу работы с NDK. И да, вы должны уметь его компилировать и вызывать его из NDK без каких-либо изменений (предполагая, что код не ссылается на другие библиотеки).

Посмотрите примеры NDK для запуска здесь: http://developer.android.com/sdk/ndk/overview.html#samples

Затем в вашем NDK посмотрите пример с two-libs . Вероятно, вы захотите просто статически связать свою стороннюю библиотеку обнаружения тонального тона с вашим собственным кодом C.

Вам нужно будет посмотреть на Android.mk и изменить его, чтобы статически создавать свою стороннюю библиотеку, а затем указывать, что ваш основной проект использует эту библиотеку.

Это должно быть довольно просто. NDK (не использовал его в то время) немного медведь. Поэтому убедитесь, что ваша среда сборки (особенно если вы используете Windows + Cygwin) работает. Убедитесь, что hello-jni builds, и по умолчанию построены две библиотеки libs. Измените вторую, и вы должны быть там.