Ответ 1
После краткого исследования я узнал, что мне нужно добавить
`LOCAL_LDFLAGS += -ljnigraphics`
в файле Android.mk.
У меня возникла проблема при компиляции моего приложения, которое вдохновлено растровой плазмой. Я звонил
if ((ret = AndroidBitmap_getInfo(env, bitmap, &info)) < 0) {
LOGE("AndroidBitmap_getInfo() failed ! error=%d", ret);
return;
}
if (info.format != ANDROID_BITMAP_FORMAT_RGB_565) {
LOGE("Bitmap format is not RGB_565 !");
return;
}
if ((ret = AndroidBitmap_lockPixels(env, bitmap, &pixels)) < 0) {
LOGE("AndroidBitmap_lockPixels() failed ! error=%d", ret);
}
/*****code here***********/
AndroidBitmap_unlockPixels(env, bitmap);
Я включил android/bitmap.h в свой исходный файл. Я использую android-ndk-r5b и sdk-9 на ubuntu 10.10.
Я получаю сообщение об ошибке
/home/user5432/workspace/bitmapproj/obj/local/armeabi/objs-debug/mybitmap.o : In function Java_com_example_plasma_PlasmaView_renderPlasma
"undefined reference to AndroidBitmap_getInfo"
"undefined reference to AndroidBitmap_lockPixels"
"undefined reference to AndroidBitmap_unlockPixels"
Проблема связана с кодом отладки. Но в чем проблема? Может ли кто-нибудь ответить?
После краткого исследования я узнал, что мне нужно добавить
`LOCAL_LDFLAGS += -ljnigraphics`
в файле Android.mk.
Если вы используете Android Studio, вам нужно будет добавить библиотеку в файл gradle.build.
android {
...
defaultConfig {
...
ndk {
ldLibs = ["android", "jnigraphics", <other ndk libraries you might need>]
moduleName "webcam"
}
}
}
Кажется, что gradle игнорирует файл Android.mk для зависимостей ndk. См. undefined ссылку на` __android_log_print ', в частности, комментарий Стивена Кайзера к выбранному ответу и ответу BoredT.
Я решил, добавив строку "-ljnigraphics" в файл "CMakeList.txt":
"target_link_libraries( # Specifies the target library.
native-lib
-ljnigraphics
# Links the target library to the log library
# included in the NDK.
${log-lib} )