资源简介
实例中演示了各种参数形式的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个文件信息
相关资源
- JAVA JSP公司财务管理系统 源代码 论文
- JSP+MYSQL旅行社管理信息系统
- 推荐算法的JAVA实现
- 基于Java的酒店管理系统源码(毕业设
- java-图片识别 图片比较
- android毕业设计
- java23种设计模式+23个实例demo
- java Socket发送/接受报文
- JAVA828436
- java界面美化 提供多套皮肤直接使用
- 在线聊天系统(java代码)
- 基于Java的图书管理系统807185
- java中实现将页面数据导入Excel中
- java 企业销售管理系统
- java做的聊天系统(包括正规课程设计
- Java编写的qq聊天室
- 商店商品管理系统 JAVA写的 有界面
- JAVA开发聊天室程序
- 在linux系统下用java执行系统命令实例
- java期末考试试题两套(答案) 选择(
- JAVA3D编程示例(建模、交互)
- Java 文件加密传输
- java做的房产管理系统
- 基于jsp的bbs论坛 非常详细
- [免费]java实现有障碍物的贪吃蛇游戏
- java Servlet投票实例
- 操作系统作业 (pv,作业管理,等5个
- 基于C/S架构考试系统(Java)
- java access 仓库管理系统 源码
- 一元多项式相加 java实现
评论
共有 条评论