因为项目需要,要在java里调用佳博打印机的TSCLIB.dll库:
1:使用绝对路径
TscLibDll INSTANCE = (TscLibDll) Native.loadLibrary ("D:\\TSCLIB", TscLibDll.class);
此时要将TSCLIB.dll和TSCLIB.lib同时放在D盘下,调用打印机没问题
2:使用动态路径加载:(参考:http://blog.youkuaiyun.com/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);
in