Android ndk开发swig编译jni接口配置文件(二)

之前写过一篇Android ndk开发swig编译jni接口。看这篇看不懂,看以去看看。c++与Java有些语言结构还是有一定区别,比如c++结构体,一些函数的返回值等都是有所不同,进行swig编译要进行一些预处理,也就是配置一下就行。下面说说几种情况。

一、一般情况下string,数组,枚举类型等配置Unix.i

%module Survey
%include "std_string.i"
%include "arrays_java.i"
%include "typemaps.i"
%include "enums.swg"

%{
#include <src\PosiOffset.cpp>
%}
%include <src\PosiOffset.h>


二、计算返回double类型配置Unix.i

1、首先现在c++的CPosiOffset.h文件配置函数

#ifndef SWIG 
 /// 计算结果
 bool GetOffset(double& dCx, double& dCy, double& dCh);
#else
 /// 计算结果
 bool GetOffset(double& OUTPUT, double& OUTPUT, double& OUTPUT);
#endif //SWIG

2、在对应的c++ CPosiOffset.cpp文件

/// 计算结果,并获取偏移采集坐标
bool CPosiOffset::GetOffset(double& dCx, double& dCy, double& dCh)
{
     dCx=   
     dCy=    
     dCh=   
   return true;
}


3.在Unix.i配置如下

%module Survey
%include "std_string.i"
%include "arrays_java.i"
%include "typemaps.i"
%include "enums.swg"%apply double& OUTPUT {double& result} //加上这一句
%{
#include <src\PosiOffset.cpp>
%}
%include <src\PosiOffset.h>

以上两种通用配置Application以及Android

1.Application

APP_ABI := armeabi
APP_STL := stlport_static


2. Android

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE    := PosiLib
LOCAL_SRC_FILES := Unix_wrap.cxx
include $(BUILD_SHARED_LIBRARY)


三. 讲一下函数返回是的结构体配置

1.在CPosiOffset.h文件配置函数

在上面头文件加上

#ifndef _POSI_OFFSET_H_
#define _POSI_OFFSET_H_
#include "DefineStructure.h"
#include "PosiOffset.h"
#ifdef SWIG
%apply double& OUTPUT {double& result}
%feature ("director") CPosiOffset;
#endif


2. 在CPosiOffset.cpp里面不用做处理

3. 在在Unix.i配置如下

%module Survey

%module(directors = 1) Unix   //加上这一句
%include "std_string.i"
%include "arrays_java.i"
%include "typemaps.i"
%include "enums.swg"
%{
#include <src\PosiOffset.cpp>
%}
%include <src\PosiOffset.h>

4.Android

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE    := PosiLib
LOCAL_SRC_FILES := Unix_wrap.cxx
LOCAL_CPP_FEATURES += rtti
include $(BUILD_SHARED_LIBRARY)

5.Application

APP_CFLAGS += -fexceptions
APP_STL := gnustl_static
APP_PALTFORM := android-9

到这里就结束了,具体有些看不懂语句意思,可以复制去百度,其实ndk开发有很多类型,网上也有不同编译方法。我介绍四不用自已写包名什么,都是自动编译产生。
刚刚看到排版太难看了,我把它删了,重新编辑一篇。也是希望提供大家学习交流,自已方便查阅。



 

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值