java由於語言限制,不能使用char*作為返回值。 局部變量的字符串不能正常返回,vc可以正常接收,java不能接收。
c語言
int __stdcall GetCharacterCodeJn(char* outjson, int* outjson_len)
java語言
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);
    }
    
  
    
}
 
        
