bstr java_dll函数是bstr类型java是什么类型

d3211d2a4bd072692dab716d10bbb5dc.png

这几天因为项目需要,用到了java调用dll文件中的方法。写成dll文件大多是用C、VB、Delphi语言弄成的,对于我这个纯粹干java的人员来说,着实让我太为难了。唉,也就是说我编程底子没有搭好,惭愧。要是这些语言我都会些,也不至少让我了解并应用这个技术花了很长时间。

我是用JNative技术做的一个例子。需要用到的是:JNative.jar,JNative.dll这些是在Windows中开发的,如果用Linus要用到libJNative.so

1.将JNative.dl,所要读的dll文件l放在C:\windows\system32下面。

2.将JNative.jar放在你的项目下的lib下面

3.将要读的dll文件放在跟使用的类相同的目录下。

4.我的类的源码

package sms;

import org.xvolks.jnative.JNative;

import org.xvolks.jnative.exceptions.NativeException;

import org.xvolks.jnative.misc.basicStructures.AbstractBasicData;

import org.xvolks.jnative.pointers.Pointer;

import org.xvolks.jnative.pointers.memory.MemoryBlockFactory;

public class SystemTime extends AbstractBasicData{

public short wYear;

public short wMonth;

public short wDayOfWeek;

public short wDay;

public short wHour;

public short wMinute;

public short wSecond;

public short wMilliseconds;

/**

* 分配内存,并返回指针

*/

public Pointer createPointer() throws NativeException {

pointer = new Pointer(MemoryBlockFactory.createMemoryBlock(getSizeOf()));

return pointer;

}

/**

* 内存大小

*/

public int getSizeOf(){

return 8 * 2;

}

/**

* 获取通过内存指针解析出结果

*/

public SystemTime getValueFromPointer() throws NativeException {

wYear = getNextShort();

wMonth = getNextShort();

wDayOfWeek = getNextShort();

wDay = getNextShort();

wHour = getNextShort();

wMinute = getNextShort();

wSecond = getNextShort();

wMilliseconds = getNextShort();

return this;

}

public SystemTime() throws NativeException{

super(null);

createPointer();

}

public String toString(){

return wYear + "/" + wMonth + "/" + wDay + " at + " + wHour + ":" + wMinute + ":" + wSecond + ":" + wMilliseconds;

}

public static SystemTime GetSystemTime() throws NativeException, IllegalAccessException {

// 创建对象

JNative nGetSystemTime = new JNative("Kernel32.dll", "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());

}

}

注:Kernel32.dll是我要读的dll文件,GetSystemTime是dll文件中的方法(就是所谓的函数名)

That's ok,相信我这么不懂dll的都能做出来,你也能

◆◆

评论读取中....

请登录后再发表评论!

◆◆

修改失败,请稍后尝试

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值