java調用c庫實例


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);
    }
    

  
    
}

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM