jni利用class文件生成.h文件时,如果原始java文件有包的话,不能直接使用javah -jni xxx来生成。
这时候,需要让javah知道整个包的目录,然后才能生成.h文件。
具体例子:
ImageRetrieve.java
package cn.edu.pku.idm.mmr.image;
public class ImageRetrieve {
public native static void InitDLLInfo();
}
路径:C:\Users\user\workspace\mmQA\src\cn\edu\pku\idm\mmr\image\ImageRetrieve.java
生成class文件:C:\Users\user\workspace\mmQA\src\cn\edu\pku\idm\mmr\image> javac ImageRetrieve.java
生成.h文件:C:\Users\user\workspace\mmQA\src\cn\edu\pku\idm\mmr\image> javah -jni -classpath
C:\Users\user\workspace\mmQA\src cn.edu.pku.idm.mmr.image.ImageRetrieve
(相当于:javah -jni -classpath 到包上层的路径 包的全名.XXX)
这玩意居然折腾了我一天……找个正确的答案真难啊~