之前写过一篇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 := armeabiAPP_STL := stlport_static


2. Android

LOCAL_PATH := $(call my-dir)include $(CLEAR_VARS)LOCAL_MODULE    := PosiLibLOCAL_SRC_FILES := Unix_wrap.cxxinclude $(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    := PosiLibLOCAL_SRC_FILES := Unix_wrap.cxxLOCAL_CPP_FEATURES += rttiinclude $(BUILD_SHARED_LIBRARY)

5.Application

APP_CFLAGS += -fexceptionsAPP_STL := gnustl_staticAPP_PALTFORM := android-9

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



更多相关文章

  1. C语言函数的递归(上)
  2. Android(安卓)Interface Definition Language (AIDL)——翻译自d
  3. Android的JNI_OnLoad简介与应用
  4. Android最简单的基于FFmpeg的例子(四)---以命令行的形式来使用ff
  5. Android逆向之旅—Hook神器Frida使用详解
  6. Android(安卓)SQLite基础
  7. Android使用TabHost程序异常终止could not create tab content b
  8. Android系统文件夹结构详细解析
  9. 2112-7-18 android切屏动画overridePendingTransition的应用

随机推荐

  1. Android(安卓)小项目之--SQLite 使用法门
  2. 移动端网络优化
  3. android和ios的系统特性区别
  4. android
  5. Cocos2d-x在win7下的android交叉编译环境
  6. anctionbar样式 自定义属性
  7. android沉浸式+虚拟按键+Fragment+Coordi
  8. android 事件流转机制
  9. android调用第三方库——第四篇——调用
  10. Android之ORMLite实现数据持久化的简单使