SWIG c++转Java

传递 char*(char*,int)时,使用,并将char*更改为byteBuff,byteBuff{char*,int}

一、.i文件

%include "typemaps.i"

%include "carrays.i"
%{
#include "TDFClient.h"
%}

%module tdfapi
%pragma(java) jniclasscode=%{ 
  static { 
    try { 
        System.loadLibrary("tdfapi_jni"); 
    } catch (UnsatisfiedLinkError e) { 
      System.err.println("Native code library failed to load. \n" + e); 
      System.exit(1); 
    } 
  } 
%}

%apply (char *STRING, int LENGTH) { (char *data, int size) };
%typemap(newfree) char * "delete[] ($1);";

%typemap(out) ByteBuff {
  size_t n = ((ByteBuff)result).len;
  char* buf = ((ByteBuff)result).buff;
   printf("n=%d,buf=%s\n",n,buf);
  if(buf)
  {
 jresult = jenv->NewByteArray(n);
 if(jresult)
 jenv->SetByteArrayRegion(jresult,0,n, (jbyte*)buf);
 delete[] buf;
  }
}

%typemap(jni)      ByteBuff "jbyteArray"
%typemap(jtype)    ByteBuff "byte[]"
%typemap(jstype)   ByteBuff "byte[]"
%typemap(javaout)  ByteBuff { return $jnicall; }

%include "TDFClient.h"


c++端

ByteBuff GetAsynMsg(int timeout){};

void  SendMsg(char *data, int size){};


二、编译代码(c++ to java): D:\Tools\swigwin-2.0.11\swig(swig安装路径) -java -c++ -package cn.com.w -outdir src/cn/com/w  -I.\  -o tdfapi_wrap.cxx(形成的文件名) tdfapi.i(swig的.i文件)


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值