Проблема JNI в Linux: не удается открыть файл общих объектов

Я видел этот вопрос здесь, пробовал предложенные исправления, но до сих пор успеха для меня не было. У меня есть довольно большой опыт Java, но JNI давно, никогда не делал это на Linux, хотя...

Я пытаюсь получить простое приложение HelloWorld JNI под управлением Linux.

Малый файл Java:

class HelloWorld {

    private native void print();

    public static void main(String[] args){
        new HelloWorld().print();
    }

    static {
        System.out.println(System.getProperty("java.library.path"));
        System.loadLibrary("HelloWorld");
    }

}

Малый файл C:

#include <jni.h>
#include <stdio.h>
#include "HelloWorld.h"

JNIEXPORT void JNICALL
Java_HelloWorld_print(JNIEnv *env, jobject obj)
{
    printf("Hello World!\n");
    return;
}

скомпилировал файл C по:

gcc -shared -Wall -fPIC HelloWorld.c -I/usr/lib/gcc/x86_64-redhat-linux/3.4.3/include/ -o libHelloWorld.so

Запустите приложение по:

java HelloWorld

или

java -Djava.library.path=/home/nxp40954/jnitesting/. HelloWorld

Но ничего хорошего, получив:

Exception in thread "main" java.lang.UnsatisfiedLinkError: /home/nxp40954/jnitesting/libHelloWorld.so: /home/nxp40954/jnitesting/libHelloWorld.so: cannot open shared object file: No such file or directory

Странно, потому что на самом деле существует файл /home/nxp40954/jnitesting/libHelloWorld.so .

Есть ли у кого-нибудь подсказка?

-121--1182274- android set image as contact icon/wallpaper Я написал свой собственный ImageViewer, и теперь я хочу, чтобы набор как функциональность, как в Android native ImageViewer. Я теперь это возможно, так как у Facebook это есть. Я приложил скриншот, чтобы сделать себя...

Я написал свой собственный ImageViewer и теперь я хочу иметь Установить как функциональность, как в Android native ImageViewer. Я теперь это возможно, так как у Facebook это есть. Я приложил снимок экрана, чтобы прояснить себя. enter image description here

P.S. Я хочу дать более подробное объяснение того, что идет не так. После выбора в меню «Contact icon» появится список моих контактов. При выборе контакта прикладная сила закрывается. Если выбрать «Домой/Заблокировать обои экрана», откроется галерея моего телефона. Вот мой фрагмент кода:

                Bitmap icon = mBitmap;
                Intent setAs = new Intent(Intent.ACTION_ATTACH_DATA);
                setAs.setType("image/jpg");
                ByteArrayOutputStream bytes = new ByteArrayOutputStream();
                icon.compress(Bitmap.CompressFormat.JPEG, 100, bytes);
                File f = new File(Environment.getExternalStorageDirectory() + File.separator + "/my_tmp_file.jpg");
                try {
                    f.createNewFile();
                    FileOutputStream fo = new FileOutputStream(f);
                    fo.write(bytes.toByteArray());
                } catch (IOException e) {                       
                    e.printStackTrace();
                }
                setAs.putExtra(Intent.EXTRA_STREAM, Uri.parse("file:///sdcard/my_tmp_file.jpg"));
                startActivity(Intent.createChooser(setAs, "Set Image As"));

Я также добавил соответствующие разрешения в мой манифест и я могу записать свое изображение на SD-карту телефона.

LogCat Output

6
задан superM 5 September 2011 в 08:57
поделиться