2015-05-06 3 views
0

Получения этого исключения при создании Java обертки для C SDL библиотеки:Не может понять это UnsatisfiedLinkError

Exception in thread "main" java.lang.UnsatisfiedLinkError: com.sdl4j.renderer.SDL_Renderer.SDL_CreateRenderer(Lcom/sdl4j/window/SDL_Window;II)Lcom/sdl4j/renderer/SDL_Renderer;

Java Caller (первый метод завершает отлично и выглядит 100% похожи на обоих Java/C++ стороны):

функция
SDL_Window win = SDL_CreateWindow("Hello World!", 0, 0, 1024, 768, SDL_WindowFlags.SDL_WINDOW_SHOWN); 
    SDL_Renderer ren = SDL_CreateRenderer(win, -1, SDL_RendererFlags.SDL_RENDERER_ACCELERATED | SDL_RendererFlags.SDL_RENDERER_PRESENTVSYNC); 

Native Java: заголовок

public static native SDL_Renderer SDL_CreateRenderer(SDL_Window window, int index, int flags); 

C:

* Class:  com_sdl4j_renderer_SDL_Renderer 
* Method: SDL_CreateRenderer 
* Signature: (Lcom/sdl4j/window/SDL_Window;II)Lcom/sdl4j/renderer/SDL_Renderer; 
*/ 
JNIEXPORT jobject JNICALL  Java_com_sdl4j_renderer_SDL_1Renderer_SDL_1CreateRenderer 
(JNIEnv *, jclass, jobject, jint, jint); 

C++ реализация:

JNIEXPORT jobject JNICALL Java_com_sdl4j_renderer_SDL_1Renderer_SDL_1CreateRenderer(JNIEnv *env, jclass , jobject win, jint index, jint flags) { 

cout << "Create renderer: " << endl; 
} 

Не могу понять, почему он не работает, пожалуйста, вы можете помочь.

Приветствия

+0

У вас есть перегрузка для метода SDL_CreateRenderer? –

+0

Просто искал базу кода, нет, только 1 определение. –

+0

Вы сгенерировали этот материал с помощью 'javah'? Если нет, сделайте это и соответствующим образом скорректируйте код C. – EJP

ответ

0

Если у вас есть перегруженный метод, вы должны иметь «полное» имя метода JNI.
Имя методы следует также включать в себя тип аргументов (так JNI может различать перегруженные методы)

JNIEXPORT jobject JNICALL  Java_com_sdl4j_renderer_SDL_1Renderer_SDL_1CreateRenderer__Lcom_sdl4j_window_SDL_1Window_2II 
(JNIEnv *, jclass, jobject, jint, jint); 

Технически это же имя метода, то добавьте 2 подчеркивание и типов аргументов.

_  =/
_1  = _ 
_2  = ; 
_00024 = $ 
Смежные вопросы