您的位置:

java加载dll动态库,js调用dll动态链接库

本文目录一览:

java调用DLL动态库

1、总体说明:实现一个函数,传入整形数i,返回值i*i,这个函数做在DLL中,java将通过JNI调用这个函数,传入一个参数,得到返回值。

确定DLL的名称为calldll.dll,函数shanfei(int i)。2、编写java程序javacall.java,如下:public class javacall

{

static

{

System.loadLibrary("calldll");

}

public native static int shanfei(int i);

public static void main(String[] args)

{

javacall jc = new javacall();

int j;

j = jc.shanfei(4);

System.out.println(j);

}

}3、编译javac javacall.java4、生成头文件javah -jni javacall

生成javacall.h文件5、制作VC++动态库建立新DLL工程,程序中添加:#include "javacall.h"

JNIEXPORT jint JNICALL Java_javacall_shanfei (JNIEnv *, jclass, jint p)

{

int j = p*p;

return j;

}别忘了将javacall.h复制到VC工程目录中,然后编译,如果编译说找不到jni.h文件,可以将jni.h复制到工程目录中,还可将javacall.h文件中的#include jni.h改为#include "jni.h",再编译。

编译生成DLL文件如“test.dll”,名称与System.loadLibrary("test")中的名称一致

vc的编译办法:cl -I%java_home%include -I%java_home%includewin32 -LD com_hode_hodeframework_modelupdate_CheckFile.c -Fetest.dll

最后在运行时加参数-Djava.library.path=[dll寄存的路径]

相关的主题文章: 6、java调用将生成的calldll.dll文件复制到javacall.java所在的目录中,运行java javacall,应该可以看到运行结果。

java如何加载多个C动态库的dll

启动函数里设置 -Djava.library.path="路径"

Widndows下多个路径请用;隔开,这个dll必须使用JNI技术编译的。

假设DLl.dll

你只需要在程序里写上System.loadLibrary("DLL");

java加载dll文件

java没法直接读,只能先用C++写一个读取该dll内容的过程,按JNI规范封装成dll,然后java加载这个dll执行其中的函数。

eclipse中的java工程项目如何引用外部jar包和dll动态链接库

1、引用jar包

绝对路径引用:右键工程--properties--Java Build Path--Libraries--Add external JARs... ,在弹出的对话框中选择要引入的jar包,OK即可。

相对路径引用:首先在工程目录下,新建一个libs文件夹,将要导入的jar包放入其中,然后右键工程--properties--Java Build Path--Libraries--Add JARs... ,在弹出的对话框中选择libs文件夹下的jar包即可。

2、引用dll动态链接库

绝对路径引用:右键工程--properties--java Build Path--Source,点开工程,选择Native libraries location....,点击右侧的edit..--external Folder...,选择要引入的dll文件所在文件夹即可。

相对路径引用:首先在工程目录下,新建一个libs文件夹,将要导入的dll文件包放入其中,右键工程--properties--java Build Path--Source,点开工程,选择Native libraries location....,点击右侧的edit..--Workspace..,选择libs文件夹即可。

java 读取DLL 咋弄?

一、建立java文件

注意点:1.要对dll里面的方法做本地声明

2.加载dll

示例代码:

public class testdll {

static{

System.loadLibrary("goodluck"); //注意:不写扩展名,名字要与dll的文件名一致

}

public native int getValue();

public native void setValue(int i); /**

* @param args

*/

public static void main(String[] args) {

testdll test=new testdll();

test.setValue(10);

System.out.println(test.getValue());

}

}

二、编译

javac testdll.java ------如果没有错,进行下一步

javah testdll ------生成testdll.h这个头文件

三、实现步骤一中声明的方法

打开VC++6.0,建立一个dll空工程,把testdll.h导入工程中,新建一个test.cpp源文件

打开testdll.h,发现里面有两个方法:

/*

* Class: testdll

* Method: getValue

* Signature: ()I

*/

JNIEXPORT jint JNICALL Java_testdll_getValue

(JNIEnv *, jobject);/*

* Class: testdll

* Method: setValue

* Signature: (I)V

*/

JNIEXPORT void JNICALL Java_testdll_setValue

(JNIEnv *, jobject, jint);

JNIEXPORT不用管,第二个单词jint/void是返回值,jint相当于int类型,JNICALL不用管,每一个方法名前都有前缀Java_testll_,前两个参数JNIEnv *和jobject不用管,第二个方法的第三个参数jint就是java文件里的int i。

上面有声明了,现在就要实现这两个方法,把代码补充进来吧:)

示例代码:

#include "testdll.h"

int i=0;

JNIEXPORT jint JNICALL Java_testdll_getValue

(JNIEnv *, jobject){

return i;

}

JNIEXPORT void JNICALL Java_testdll_setValue

(JNIEnv *, jobject, jint j){

i=j;

}

四、编译

此时编译会出现error,主要是提示找不到jni.h(这个包含在testdll.h)里,需要我们把jni.h、jni_md.h复制到C:\Program Files\Microsoft Visual Studio\VC98\Include这个目录里(默认安装目录,如果安装VC不是这个目录,请自行找到Include目录)。

jni.h------------------jdk安装目录\include

jni_md.h------------jdk安装目录\include\win32

然后再编译,构建,就有了test.dll这个动态链接库文件了,把它重命名成goodluck.dll,然后复制到testdll.java的目录下,运行吧:)

java testdll

结果:

10