JNA加载DLL库

本文介绍了如何在Java项目中利用JNA动态加载佳博打印机的TSCLIB.DLL库。首先尝试使用绝对路径加载,要求DLL和LIB文件位于D盘同一目录。接着探讨了通过动态路径加载DLL的方法,引用了相关技术博客进行详细说明。
摘要由CSDN通过智能技术生成

因为项目需要,要在java里调用佳博打印机的TSCLIB.dll库:

1:使用绝对路径

 TscLibDll INSTANCE = (TscLibDll) Native.loadLibrary ("D:\\TSCLIB", TscLibDll.class);

此时要将TSCLIB.dll和TSCLIB.lib同时放在D盘下,调用打印机没问题

2:使用动态路径加载:(参考:http://blog.csdn.net/u011088260/article/details/52005347)

TscLibDll INSTANCE = (TscLibDll) Native.loadLibrary ("TSCLIB", TscLibDll.class);

 注意: 此时TSCLIB不能加后缀名,设及到跨平台的思想

此时TSCLIB.dll加载的顺序是:
1:项目路径下
2:库文件路径下:库文件路径可以用 System.out.println(System.getProperty("java.library.path"));打印到控制台
ps:按打印出来的路径去找,我的路径里有之前实验放进去的同名的TSCLIB.dll文件,会导致报out of memery,google说是类型转换问题,没深究,换了打印机自带的dll文件,
问题解决了

中间还可能会报一个:can't load (win32-x86,,,后面跟着你一串路径,按这个路径去找没发现问题,所以读取本地库的路径应该是上述所说的,按这个报错路径没发现问题

调用打印机的代码:
package PrintTest;

import com.sun.jna.Library;
import com.sun.jna.Native;

import jackingTest.PipeCutingItem;
import jackingTest.PipejackingResult;

public class PrintTest {
	 public interface TscLibDll extends Library {
	        TscLibDll INSTANCE = (TscLibDll) Native.loadLibrary ("TSCLIB", TscLibDll.class);
	        int about ();
	        int openport (String pirnterName);
	        int closeport ();
	        int sendcommand (String printerCommand);
	        int 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值