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

  
    
}

  

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值