java因爲語言限制,不能使用char*做爲返回值。 局部變量的字符串不能正常返回,vc能夠正常接收,java不能接收。java
c語言json
int __stdcall GetCharacterCodeJn(char* outjson, int* outjson_len)
java語言code
package softgranttest; import java.io.File; import java.io.FileDescriptor; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.UnsupportedEncodingException; import com.sun.jna.Library; import com.sun.jna.Memory; import com.sun.jna.Native; import com.sun.jna.Pointer; public class Test { // 定義接口CLibrary,繼承自com.sun.jna.Library public interface testdll extends Library { testdll Instance = (testdll) Native.loadLibrary("totfranjo" , testdll.class); int GetYellopCouCod(Pointer outjson_pointer,Pointer outjson_len_pointer); } public static void main(String[] args) throws IOException { Test_RRROOO(); } /** * 特徵碼 * * @throws UnsupportedEncodingException */ private static void Test_RRROOO() throws UnsupportedEncodingException { String strRet = ""; Pointer outjson_pointer = new Memory(1024); Pointer outjson_len_pointer = new Memory(8); int nRet = testdll.Instance.GetYellopCouCod(outjson_pointer,outjson_len_pointer); int outjson_len = outjson_len_pointer.getInt(0); byte[] bytOutjson = outjson_pointer.getByteArray(0, outjson_len); strRet = new String(bytOutjson, "gb2312"); System.out.println(strRet); } }