JAVA调用DLL简单小例子

时间:2024.5.9

JAVA调用DLL简单小例子

这个小例子用JNI调用了VC++做的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.java

4、生成头文件

javah 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",再编译。

6、java调用

将生成的calldll.dll文件复制到javacall.java所在的目录中,运行

java javacall,应该可以看到运行结果。


第二篇:JAVA调用DLL


今天使用,JAVA调用DLL文件,报错误:

Exception in thread "main" java.lang.IllegalStateException: JNative library not loaded, sorry !

我用的是java工程,不是web工程,总是提示报错!!

解决方法:

将JNativeCpp.dll拷贝到jdk的目录下面.

如:D:\Program Files (x86)\Java\jdk1.6.0_27\jre\bin

目录下面即可解决问题!!

下面贴出我的一个实例:

package com.test.JNative;

import org.xvolks.jnative.JNative;

import org.xvolks.jnative.exceptions.NativeException;

import org.xvolks.jnative.pointers.Pointer;

import org.xvolks.jnative.pointers.memory.MemoryBlockFactory; import org.xvolks.jnative.util.Kernel32.SystemTime;

import org.xvolks.jnative.Type;

public class UserCall {

public static SystemTime GetSystemTime() throws NativeException, IllegalAccessException{

// 创建对象

// Kernel32.dll为dll名称,Kernel32目录的位置

为:C:\Windows\System32下面,

// GetSystemTime为Kernel32.dll中的一个方法.

JNative nGetSystemTime = new JNative("Kernel32", "GetSystemTime");

SystemTime systemTime = new SystemTime();

// 设置参数

nGetSystemTime.setParameter(0,

systemTime.getPointer());

nGetSystemTime.invoke();

// 解析结构指针内容

return systemTime.getValueFromPointer();

}

public static void main(String[] args) throws NativeException, IllegalAccessException {

System.err.println(GetSystemTime());

}

}

小结:

使用的方式为JNative-1.3.2开源组件进行调用的方式

(1)JNative.jar拷贝到当前目录下面!!

(2)JNativeCpp.dll拷贝到jdk的目录下面.

如:D:\Program Files (x86)\Java\jdk1.6.0_27\jre\bin

运行上面的程序,返回的是当前的时间:

2012/1/4 at 6:40:50:918

2012-01-04日

更多相关推荐:
最简单的聘用合同

聘用合同甲方煤矿乙方身份证号码家庭住址根据企业安全生产管理需要依照劳动法和劳动合同法等国家有关法律法规甲方决定聘请乙方担任甲方矿长职务甲乙双方本着平等自愿协商一致的原则签订本合同书一乙方必须经资质培训机构专业培...

聘用合同-简单版

聘用合同甲方用人单位乙方性别年月日出生族住身份证号联系电话甲方系经营的用户现需要招收一名人员双方经友好协商在平等和谐诚信的基础上签订以下协议一甲方系经营的用户现招收乙方为本店的人员二乙方为本店现招收的人员从合同...

简单劳动合同范本

劳动合同甲方用人单位乙方劳动者法定代表人身份证号码联系地址根据中华人民共和国劳动合同法和国家及省的有关规定甲乙双方按照合法公平平等自愿协商一致诚实信用的原则订立本合同一合同期限自年月日起至年月日止前个月是试用期...

聘用合同-简单版

聘用合同甲方用人单位乙方性别年月日出生族住身份证号联系电话甲方系经营的用户现需要招收一名人员双方经友好协商在平等和谐诚信的基础上签订以下协议一甲方系经营的用户现招收乙方为本店的人员二乙方为本店现招收的人员从合同...

一个简单的劳动合同范本

劳动合同甲方地址电话法定代表人或委托代表人乙方性别年龄居民身份证号码年月日根据中华人民共和国劳动法甲乙双方经平等协商同意自愿签订本合同共同遵守本合同所列条款一劳动合同期限第一条本合同为期合同本合同生效日期年月日...

简单劳动合同范本

简单劳动合同范本劳动合同范本一甲方地址法定代表人主要负责人乙方性别身份证号码现通信地址联系电话为建立劳动关系明确权利义务依据劳动法劳动合同法等有关法律规定在平等自愿协商一致的基础上订立本合同第一条本合同期限自年...

用工合同范本

企业劳动合同根据中华人民共和国劳动法等有关法律规定经甲乙双方协商一致同意签订本劳动合同甲方单位名称住所地1甲方根据乙方的工作岗位及工作业绩确定工资报酬在本单位内参照适用同工同酬待遇2甲方支付给乙方的月工资不得低...

企业用工合同范本

企业用工合同书甲方用人单位名称地址法定代表人主要负责人乙方劳动者姓名性别年龄身份证号码现在住址根据中华人民共和国劳动合同法及相关法律规定甲乙双方经平等协商同意自愿签订本合同共同遵守本合同所列条款一劳动合同期限第...

简单土方合同范本

合同编号建设工程施工专业分包合同承包单位分包单位签订时间年月日1土石方施工合同承包方以下简称甲方分包方以下简称乙方依照中华人民共和国合同法和中华人民共和国建筑法及其他有关法律行政法规遵循平等自愿公平和诚信原则结...

工程施工合同范本(简易)

建设工程施工合同发包方以下称甲方承包方以下称乙方根据中华人民共和国合同法和中华人民共和国建筑法及其它有关法律行政法规为明确双方在施工过程中的权利义务经双方协商自愿签订本合同第一条工程项目一工程名称二工程地点三工...

农民工专用 简易劳动合同文本

农民工劳动合同甲方用人单位名称乙方劳动者姓名单位地址性别注册类型出生年月年月法定代表人签字身份证号码联系电话户口所在地合同履行地住址授权委托人签字联系电话身份证号码联系电话根据中华人民共和国劳动合同法及实施条例...

劳动用工协议书范本(简单)

劳动用工协议书甲方招聘方乙方受聘方身份证号双方根据中华人民共和国劳动法等法律法规在平等自愿协商一致的基础上订立本合同建立劳动关系并共同遵守履行一合同期限一从年月日起到年月日止合同期限为年个月二双方同意本合同有效...

简单聘用合同范本(6篇)