Подтвердить что ты не робот

Android-растровый код на основе растрового изображения - проблема связывания

У меня возникла проблема при компиляции моего приложения, которое вдохновлено растровой плазмой. Я звонил

    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"

Проблема связана с кодом отладки. Но в чем проблема? Может ли кто-нибудь ответить?

4b9b3361

Ответ 1

После краткого исследования я узнал, что мне нужно добавить

`LOCAL_LDFLAGS += -ljnigraphics` 

в файле Android.mk.

Ответ 2

Если вы используете 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.

Ответ 3

Я решил, добавив строку "-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} )