因为项目需要,要在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