使用java调用dll传入中文的时候,dll接收中文显示的是乱码。解决方案如下:使用WString来解决中文乱码问题。
1. 在cf.h头文件有如下申明:采用C语言形式接口函数。Public int ReadRowData(const wchar_t* name);
2.java调用dll。
package com.jna.test;
import com.sun.jna.Library;
import com.sun.jna.Native;
import com.sun.jna.WString;
public interface PrinterLibrary extends StdCallLibrary {
public static PrinterLibrary INSTANCE = (PrinterLibrary) Native.loadLibrary("printer", PrinterLibrary.class);
public int ReadRowData(WString logicName);
}
3.测试调用.
package com.jna.test;
import com.sun.jna.WString;
import com.jna.test;
public class Printer {
public static void main(String[] args) {
int result = PrinterLibrary.INSTANCE.ReadRowData(new WString("测试打印"));
System.out.println("result:"+result);
}
}