Salve a tutti,
ho un problemi nell'eseguire un semplice programma che utilizza Java JNI. Voglio lanciare un metodo C++ utilizzando Java.
L'errore è java.lang.UnsatisfiedLinkError: Test1.inDll()V
at Test1.inDll(Native Method)
at Test1.main(Test1.java:11)
Allego codice Java
Qui il codice generato con javah -jni Test1 ovvero Test1.hcodice:class Test1 { static { System.loadLibrary("TestDll"); } public static void main(String ar[]) { System.out.println("Hello world from Java"); Test1 t=new Test1(); t.inDll(); } public native void inDll(); }
e infine l'header file che include quello precedentecodice:/* DO NOT EDIT THIS FILE - it is machine generated */ #include <jni.h> /* Header for class Test1 */ #ifndef _Included_Test1 #define _Included_Test1 #ifdef __cplusplus extern "C" { #endif /* * Class: Test1 * Method: inDll * Signature: ()V */ JNIEXPORT void JNICALL Java_Test1_inDll (JNIEnv *, jobject); #ifdef __cplusplus } #endif #endif
codice:// TestDll.h : file di intestazione principale per la DLL TestDll // #pragma once #ifndef __AFXWIN_H__ #error "inclusione di 'stdafx.h' del file corrente per PCH" #endif #include "resource.h" // simboli principali #include "Test1.h" // CTestDllApp // Vedere TestDll.cpp per l'implementazione di questa classe // class CTestDllApp : public CWinApp { public: CTestDllApp(); // Override public: virtual BOOL InitInstance(); DECLARE_MESSAGE_MAP() }; JNIEXPORT void JNICALL Java_Test1_inDll(JNIEnv *env, jobject obj) { printf("Hello word from C++"); AfxMessageBox(_T("Hello World from dll")); };

Rispondi quotando

