EQ一卡通踩过的坑,解决加载不到动态库,输出数据到led屏乱码问题

最近做的java项目设计到对接led屏,踩了很多的坑,下面下几个困扰了比较多时间的问题

第一个问题:加载不到类库

java.lang.UnsatisfiedLinkError: Unable to load library

这个我遇到了两种情况,一种是我的路径没写对,建议大家写全路径,我是放在dll包下的,这是我的写法

String m_strUserPath = System.getProperty("user.dir");
DllLibrary instance= (DllLibrary) Native.loadLibrary(m_strUserPath + "\\dll\\EQ2008_Dll",
        DllLibrary.class);

如果写了全路径还是不对,那就可能是你的java位数跟你加载的dll位数不对了,先查看下自己的java位数

EQ一卡通踩过的坑,解决加载不到动态库,输出数据到led屏乱码问题

我的是64位,接着看一下加载的dll位数,用文本的方式打开你的dll文件,我们会看到一堆的乱码,不要急,注意看第二行,找到

PE 看PE后面的是 d 还是L,如果是L那么就是32位的,这样的话你的64位的jna是加载不到的,而如果是d,就是64位的,例如

EQ一卡通踩过的坑,解决加载不到动态库,输出数据到led屏乱码问题

这个就是64位的,而下面的就是32位的:

EQ一卡通踩过的坑,解决加载不到动态库,输出数据到led屏乱码问题

网上你如果直接搜EQ2008_Dll.dll 的话,很难找到64位的,我也是找了好久没找到,最后跑去诣阔官网才找到,要去下载他的

  异步单双色二次开发包,里面有,附上地址:http://www.eqled.com/html/2710592429.html

下载完找到这里

EQ一卡通踩过的坑,解决加载不到动态库,输出数据到led屏乱码问题

里面放的就是64位的dll,下面的x86是32位的,大家根据自己的情况放到项目里面。

第二个问题:输出字符串到led屏,中文乱码,数字字母正常显示

出现这个问题是因为你的jna调用动态库的时候,没有给他一个编码,所以出现了编码错误,在你调用动态库的地方给jna调用设置下编码就行了:

System.setProperty("jna.encoding", "GBK");

好了,祝你顺利,觉得有用的给点个赞哈,有不对的地方请指正