资源简介
实例中演示了各种参数形式的DLL函数调用,如:基本数据类型、基本数据类型的指针和引用、结构体、结构体的指针和引用、函数指针和回调函数、字符串指针、输入数组、输出数组等,非常实用。
代码片段和文件信息
/************************************************
* Zhongguancun East Road #95 Room 505
* 2011-07-18
************************************************/
package CallMain;
import com.sun.jna.Library;
import com.sun.jna.Callback;
import com.sun.jna.Native;
import com.sun.jna.Structure;
import com.sun.jna.Pointer;
import com.sun.jna.ptr.IntByReference;
import com.sun.jna.ptr.FloatByReference;
public class CallMain
{
//字符转换
public static int StringToFixedBytes(String str byte by[])
{
byte byTemp[] = str.getBytes();
int strLen = byTemp.length;
int byLen = by.length;
if(strLen > byLen)
return -1;
if(strLen==0)
for(int i=0; i by[i] = ‘\0‘;
System.arraycopy(byTemp 0 by 0 strLen);
return strLen;
}
//字符转换
public static String BytesToString(byte by[])
{
String str = new String(by);
int pos = str.indexOf (‘\0‘);
if(pos!=-1)
str = str.substring (0 pos);
return str;
}
//简单结构
public static class Rect extends Structure
{
public static class ByReference extends Rect implements Structure.ByReference {};
public static class ByValue extends Rect implements Structure.ByValue{};
public int nLong;
public int nShort;
}
//包含字符数组的结构
public static class SerialNum extends Structure
{
public static class ByReference extends SerialNum implements Structure.ByReference {};
public static class ByValue extends SerialNum implements Structure.ByValue{};
public int id;
public byte msg[] = new byte[32];
public SerialNum(){
this.allocateMemory();
}
public int setMSG(String str){
return StringToFixedBytes(str msg);
}
public String getMsg(){
return BytesToString(msg);
}
}
//用于二维数组
public static class Char32msg extends Structure
{
// public static class ByReference extends Char32msg implements Structure.ByReference {};
// public static class ByValue extends Char32msg implements Structure.ByValue{};
public byte msg[] = new byte[32];
public Char32msg(){
this.allocateMemory();
}
public String getMsg(){
return BytesToString(msg);
}
}
//用于带数组指针的结构
public static class Staff extends Structure{
public static class ByReference extends Staff implements Structure.ByReference {};
public SerialNum.ByReference pSN;
public int nCount;
public Staff() {nCount=0;}
public SerialNum.ByReference[] toArray() {
return (SerialNum.ByReference[]) pSN.toArray(nCount);
}
}
//简单回调接口
public static interface CustumPlus extends Callback {
public abstract int callback(int aint b);
}
//简单回调实现
public static class SimpleAdd implements CustumPlus{
public final int callback(int a int b){
return a+b;
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 347 2011-07-13 14:06 JNA_Demo\My JNA Demo\CallDll\.classpath
文件 383 2011-07-13 14:05 JNA_Demo\My JNA Demo\CallDll\.project
文件 498 2011-07-22 15:06 JNA_Demo\My JNA Demo\CallDll\bin\CallMain\CallMain$AssignMethod$ByReference.class
文件 575 2011-07-22 15:06 JNA_Demo\My JNA Demo\CallDll\bin\CallMain\CallMain$AssignMethod.class
文件 585 2011-07-22 15:06 JNA_Demo\My JNA Demo\CallDll\bin\CallMain\CallMain$Char32msg.class
文件 239 2011-07-22 15:06 JNA_Demo\My JNA Demo\CallDll\bin\CallMain\CallMain$CustumPlus.class
文件 1165 2011-07-22 15:06 JNA_Demo\My JNA Demo\CallDll\bin\CallMain\CallMain$DispLastSN.class
文件 2036 2011-07-22 15:06 JNA_Demo\My JNA Demo\CallDll\bin\CallMain\CallMain$DllInterface.class
文件 399 2011-07-22 15:06 JNA_Demo\My JNA Demo\CallDll\bin\CallMain\CallMain$OnAssignSN.class
文件 466 2011-07-22 15:06 JNA_Demo\My JNA Demo\CallDll\bin\CallMain\CallMain$Rect$ByReference.class
文件 450 2011-07-22 15:06 JNA_Demo\My JNA Demo\CallDll\bin\CallMain\CallMain$Rect$ByValue.class
文件 496 2011-07-22 15:06 JNA_Demo\My JNA Demo\CallDll\bin\CallMain\CallMain$Rect.class
文件 486 2011-07-22 15:06 JNA_Demo\My JNA Demo\CallDll\bin\CallMain\CallMain$SerialNum$ByReference.class
文件 470 2011-07-22 15:06 JNA_Demo\My JNA Demo\CallDll\bin\CallMain\CallMain$SerialNum$ByValue.class
文件 920 2011-07-22 15:06 JNA_Demo\My JNA Demo\CallDll\bin\CallMain\CallMain$SerialNum.class
文件 521 2011-07-22 15:06 JNA_Demo\My JNA Demo\CallDll\bin\CallMain\CallMain$SimpleAdd.class
文件 470 2011-07-22 15:06 JNA_Demo\My JNA Demo\CallDll\bin\CallMain\CallMain$Staff$ByReference.class
文件 835 2011-07-22 15:06 JNA_Demo\My JNA Demo\CallDll\bin\CallMain\CallMain$Staff.class
文件 7503 2011-07-22 15:06 JNA_Demo\My JNA Demo\CallDll\bin\CallMain\CallMain.class
文件 131072 2011-07-20 17:07 JNA_Demo\My JNA Demo\CallDll\DllTest.dll
文件 948100 2011-05-12 14:09 JNA_Demo\My JNA Demo\CallDll\jna.jar
文件 9287 2011-07-22 15:09 JNA_Demo\My JNA Demo\CallDll\src\CallMain\CallMain.java
文件 18824 2011-07-18 18:12 JNA_Demo\My JNA Demo\DllTest\DllTest\DllTest.aps
文件 328 2008-04-07 15:51 JNA_Demo\My JNA Demo\DllTest\DllTest\DllTest.clw
文件 6034 2011-07-22 15:08 JNA_Demo\My JNA Demo\DllTest\DllTest\DllTest.cpp
文件 425 2011-07-20 17:07 JNA_Demo\My JNA Demo\DllTest\DllTest\DllTest.def
文件 4167 2008-04-07 15:51 JNA_Demo\My JNA Demo\DllTest\DllTest\DllTest.dsp
文件 539 2008-04-07 15:51 JNA_Demo\My JNA Demo\DllTest\DllTest\DllTest.dsw
文件 2682 2011-07-20 17:07 JNA_Demo\My JNA Demo\DllTest\DllTest\DllTest.h
文件 53760 2008-05-13 16:26 JNA_Demo\My JNA Demo\DllTest\DllTest\DllTest.opt
............此处省略24个文件信息
相关资源
- 2019Java微服务架构(SpringBoot+SpringClo
- java ssm权限管理系统 慕课实战
- pinyin4j-2.5.0jar包,JAVA生成五笔码和拼
- java学习视频网盘分享
- java相关项目实战.txt
- 编写高质量代码:改善Java程序的151个
- 用JAVA实现基于CS模式的聊天室
- 文本相似度对比器Java
- java调用打印机指令实现
-
javaba
se64-1.3.1 - 基于加密安全的java即时通信系统设计
- javaWeb在线聊天室代码技术是简单的
- openCV java的API文档
- JAVA发送HTTP请求操作类
- JAVA做MVC架构的扫雷游戏
- NativeIO.java 的源文件
- Jsf 项目源代码
- Java+MySql数据库 模拟ATM自助存取款b
- Jsp+JavaBean+Servlet的简单大学的web课程设
- 局域网聊天工具Java版
- Spring+Mybatis+Atomikos实现JAVA初始化并控
- commons-io-2.5.jar
- OnlineBookStore.rar
- java创建DBF文件官方jar修订版(修正插
- java创建DBF文件官方jar修订版(修正中
- java+mysql图书馆管理系统45625
- java企业真实项目需求
- hadoop.dll以及winutils.exe
- java拼图游戏(有难度选择)
- java读取properties文件
评论
共有 条评论