//编写JAVA文件,其中测试类为DllTest,代码如下:
public class DllTest
{
public static void main(String[] args)
{
test a=new test();
a.HelloWorld();
System.out.println(a.cToJava());
}
}
//编写JNI代码,其中类名为test,如下:
public class test {
static
{
System.loadLibrary("MyNative");
}
//以下函数只做申明,在C中实现
public native static void HelloWorld();
public native static String cToJava();
}
//使用javac得到class文件,然后使用javah命令得到.h文件
//编写C++代码,MyNative如下:
使用win32 Dynamic-link Library新建一个新空工程,新建一个c++文件,命名为MyNative.cpp,代码如下:
#include <stdio.h>
#include "test.h"
JNIEXPORT void JNICALL Java_test_HelloWorld
(JNIEnv *env, jclass jobject)
{
printf("hello world!\n");
}
JNIEXPORT jstring JNICALL Java_test_cToJava
(JNIEnv *env, jclass obj)
{
jstring jstr;
char str[]="Hello World!\n";
jstr=env->NewStringUTF(str);
return jstr;
}
函数申明要和test.h中的函数申明保持一致,否则就出错,使用rebuild all命令,得到MyNative.dll文件,拷贝到test.java同一目录下。
运行DllTest类,就得到结果,这里我们就实现用c++来实现具体函数功能的方法,当然这是最简单的JNI应用了。
分享到:
相关推荐
完整的实现java跨平台调用C程序源码,包含JAVA源码和C源码以及编译后的demo dll。将dll放到jdk bin目录下,java 项目可以直接运行。若要修改dll可以,修改C源码后重新编译生成dll。该demo处理了多线程调用c,全局...
Java通过JNI调用DLL动态库,亲测试编写
本资源包括JAVA工程,C++工程,C#dll测试工程
这两天要弄个JAVA调用DLL,研究了一下有点绕, java部分要生成.h头文件,所以弄了个例子在这分享下 JAVA调用DLL完整步骤 步骤里包括java部分代码及vc写的DLL代码
我们知道,使用 JNI 调用 .dll/.so 共享类库是非常非常麻烦和痛苦的。 假如有一个现有的 .dll/.so 文件,假如使用 JNI 技术调用,我们首先需要另外使用 C 语言写一个 .dll/.so 共享库,使用 SUN 规定的数据结构替换 ...
[JAVA]使用JNI技术实现JAVA程序调用dll、[JAVA]使用JNI技术实现JAVA程序调用dll
在JAVA中如何通过JNI调用VC动态库,以及在如何在VC中调试
问题描述: 在开发项目过程中,需要处理算法分析出来二进制流数据,并对数据解析处理转发。我们上层应用平台是使用java开发的...那现在上层应用面临的问题:访问java外部功能接口实现方式(即调用dll)怎么选择及实现?
java 调用 dll 的方法,即JNI的使用,demo中有get()/set()方法,操作步骤详细,即使是没用过java的程序员按照步骤依然可以成功。
该Demo有两个主要的例子,一个实现的是在java程序中调用DLL中的方法;而一个则是讲述如何在C++代码中调用Java类中的方法、详细阐述了JNI机制的使用,是一个很好的学习例子。
Java通过JNI调用C++接口,Demo文档描述(里面有代码),里面有Windows下调用版和linux下调用版,经本人亲自测试,可用。
JAVA如何调用dll:用JNI调用C或C++动态联接库原来如此简单
java调用本地dll的几种方法性能对比测试。 JNA消耗的总时间(ms):5406 bridj消耗的总时间(ms):984 JNI消耗的总时间(ms):47 包含c++源码和java源码,部署和使用方法。在win7和winxp下测试用过。 部分源码是...
里面是一个java使用JNI调用的实例,包含所有情况如结构体、指针等等
这是java采用jni技术调用dll(动态链接库的一个demo),不需要任何改动,自己可以用,很适合初学者
在Java中调用DLL(Dynamic Link Library)文件,可以使用Java的本地方法接口(JNI,Java Native Interface)来实现。JNI允许Java程序与本地代码进行交互,从而实现跨平台的功能。
是Java 调用DLL动态库框架,功能强大,告别往日的JNI,只需定义接口,就可以方便调用DLL库,为开发人员省了不少事。
JAVA如何调用dll:用JNI调用C或C++动态联接库原来如此简单
完整的展示了Java调用C++ API/dll示例程序. 说明如下: 1. mrSocketAPICInt是准备被java调用的API 2. mrSocketAPIJavaInt是java调用C++ api的中间层 3. mrSocketAPIJavaIntDemo是java程序,展示与C++ api如何对接。...
java 调用dll文件相关 资料 ,applet调用本地资源的解决方案 等;整合了网上主流的解决方法