1. *.dll文件用一般使用何种语言何种软件编写?
*.dll文件一般用 C语言、VC++、Delphi、C#等语言和相应的开发工具编写。如果要考虑广泛的兼容,一般使用VC++或者C语言编写,可供java、VC、Delphi、PB、VB、C#等语言调用
2. Java如何调用C语言已经编写的DLL?以D盘下的LEDSender2014.dll文件为例
第一步:定义一个接口,继承DLL的功能类
public interface VsLedDriver extends Library
{
VsLedDriver INSTANCE = (VsLedDriver) Native.loadLibrary(\"D:\\\\LEDSender2014\",VsLedDriver.class);
//以下为接口VsLedDriver继承来自Library的各种方法
//态链接库初始化
void LED_Startup();
//填写网络通讯参数,供发送时使用
int LED_UDP_SenderParam_ByReportName(int index, int localport, String remoteIP);
//获得某个在线控制卡的上报控制卡名称
String LED_Report_GetOnlineItemName(int serverindex, int itemindex);
}
其中,<1>Library是LEDSender2014.dll文件中的功能函数
<2>\"D:\\\\LEDSender2014\"是绝对路径,也可以是相当路径。如果把LEDSender2014.dll文件放到Java项目目录下,当前路径可以写为\"LEDSender2014\"
<3>java和C语言的数据类型的对应关系:unsigned char 用char;unsigned int 用int;unsigned char*、和unsigned int* 这两个是指针,第一个是取1位地址内容的,第二个根据系统而定,一般是取4位地址值的,用java 的String对应
第二步:在其他类中直接调用接口中的方法
public class LEDSendServer
{
public synchronized void send(String title,String ledIP,String path,int localport)
{
VsLedDriver.INSTANCE.LED_Startup();//动态链接库初始化,单独启动或者做成EXE 需要开启此方法
int s = VsLedDriver.INSTANCE.LED_UDP_SenderParam(0, localport, ledIP);//加载LED驱动,并与LED建立连接
}
}
因篇幅问题不能全部显示,请点此查看更多更全内容