示例 JNI 应用程序






4.04/5 (20投票s)
示例 JNI DLL 和 Java 测试代码。
引言
我一直想尝试一下 JNI。这是我的第一次尝试,所以我创建了一个名为 TestImpl.dll 的实用 DLL,它导出了在 JAVA 中难以或不可能实现的几个有用的函数。
Test.java 是一个示例应用程序,它调用下面的每个函数。
TestImp.cpp 包含生成 TestImp.dll 的代码并导出下面的函数。Java 代码使用以下行加载 TestImpl.dll:static {System.loadLibrary("TestImp");}
。
public native void print(String msg);
这很简单,只是使用 printf()
语句打印提供的 string
。
public native byte[] readFile(String path);
此函数读取文件并返回一个 byte
数组。
public native int searchFile(String path, byte[] b, int bLength);
此函数对文件执行非常快速的二进制搜索,以查找提供的 byte
数组。
public native String[] findFiles(String path, String mask);
此函数将返回一个 String[]
,其中包含与提供的掩码匹配的文件名。例如,*.*、*.java、*.class ...
public native String[] checkProcess(String processName, boolean killIt,
boolean printOutput);
此函数将检查正在运行的进程(使用任务管理器中看到的相同进程名称),列出所有正在运行的进程(使用“ ”作为进程名称),或终止一个进程。
public native int startProcess(String commandLine, String workingDir);
此函数将调用 createProcess()
。
public native boolean waitForFileMask(String directory, String fileMask);
此函数将等待(阻塞)直到一个与提供的掩码 (*.java、*.class、*.txt ...) 匹配的文件出现在提供的目录中。
public native boolean waitForAnyFile(String directory);
此函数将等待(阻塞)直到从提供的目录中添加、重命名或删除任何文件。
我包含了一个项目(VC++ 6.0),其中包含构建 DLL 的所有必需文件和一个示例 Java 文件,该文件调用上述每个函数。您可能需要编辑 javac_.bat 和 Test_run.bat 文件以指向您的 Java 安装(我运行多个版本)。
尽情享用!
历史
- 2003 年 5 月 20 日:初始发布