2010年12月13日 星期一

JNI (Java Native Interface) 注意事項

當移動 JNI class後,必須重新編譯一次表頭檔(.h)宣告,否則將來載入dll時,執行階段會出現找不到相對用的function名稱的錯誤訊息。

留個記錄:
注意package路徑




package com.jpos.MSR250SO;

public class KeyboardHookdll
{
static
{
System.loadLibrary("JposKeyHook");
}

public native boolean installhook();
public native boolean unhook();
public native void ClearKeyboardHookData();
public native byte[] getKeyboardHookData();
}


表頭檔function 名稱要能相對



/* DO NOT EDIT THIS FILE - it is machine generated */
#include
/* Header for class com_jpos_MSR250SO_KeyboardHookdll */

#ifndef _Included_com_jpos_MSR250SO_KeyboardHookdll
#define _Included_com_jpos_MSR250SO_KeyboardHookdll
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: com_jpos_MSR250SO_KeyboardHookdll
* Method: installhook
* Signature: ()Z
*/
JNIEXPORT jboolean JNICALL Java_com_jpos_MSR250SO_KeyboardHookdll_installhook
(JNIEnv *, jobject);

/*
* Class: com_jpos_MSR250SO_KeyboardHookdll
* Method: unhook
* Signature: ()Z
*/
JNIEXPORT jboolean JNICALL Java_com_jpos_MSR250SO_KeyboardHookdll_unhook
(JNIEnv *, jobject);

沒有留言:

張貼留言