码迷,mamicode.com
首页 > 移动开发 > 详细

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

时间:2015-04-18 10:09:42      阅读:152      评论:0      收藏:0      [点我收藏+]

标签:android   jni   ndk   

之前写过一篇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>
 
<span style="font-size:14px;"><strong>二、计算返回double类型配置Unix.i</strong></span>
<strong><span style="font-size:12px;">1、首先现在c++的CPosiOffset.h文件配置函数</span></strong>
<pre class="html" name="code">#ifndef SWIG 
 /// 计算结果
 bool GetOffset(double& dCx, double& dCy, double& dCh);
#else
 /// 计算结果
 bool GetOffset(double& OUTPUT, double& OUTPUT, double& OUTPUT);
#endif //SWIG
<span style="font-size:12px;"><strong>2、在对应的c++ CPosiOffset.cpp文件</strong></span>
 
<p>/// 计算结果,并获取偏移采集坐标
bool CPosiOffset::GetOffset(double& dCx, double& dCy, double& dCh)
{
     dCx=  </p><p>     dCy=   </p><p>     dCh=   </p><p>   return true;
}</p><p> </p><strong><span style="font-size:12px;">3.在Unix.i配置如下</span></strong>
<p>%module Survey
%include "std_string.i"
%include "arrays_java.i"
%include "typemaps.i"
%include "enums.swg"</p><p>%apply double& OUTPUT {double& result}  //加上这一句</p><p> </p><p>%{</p><p>#include <src\CPosiOffset.cpp></p><p>%}</p><p>%include <src\CPosiOffset.h></p>
 
<strong><span style="font-size:14px;">以上两种通用配置Application以及Android</span></strong>
<span style="font-size:12px;"><strong>1.Application</strong></span>
<p>APP_ABI := armeabi</p><p>APP_STL := stlport_static</p>
 
<span style="font-size:12px;"><strong>2.Android</strong></span>
<p>LOCAL_PATH := $(call my-dir)</p><p>include $(CLEAR_VARS)</p><p>LOCAL_MODULE    := PosiLib
LOCAL_SRC_FILES := Unix_wrap.cxx</p><p>include $(BUILD_SHARED_LIBRARY)</p><p> </p><p><span style="font-size:14px;"><strong>三. 讲一下函数返回是的结构体配置</strong></span></p><p><strong><span style="font-size:12px;">1.在CPosiOffset.h文件配置函数</span></strong></p><p><strong><span style="font-size:12px;">在上面头文件加上</span></strong></p><p>#ifndef _POSI_OFFSET_H_
#define _POSI_OFFSET_H_</p><p>#include "DefineStructure.h"
#include "PosiOffset.h"</p><p>#ifdef SWIG
%apply double& OUTPUT {double& result}
%feature ("director") CPosiOffset;
#endif</p><p>class CPosiOffset :
  {</p><p>......</p><p>}</p><p> </p><p><span style="font-size:12px;"><strong>2. 在CPosiOffset.cpp里面不用做处理.</strong></span></p><p><span style="font-size:12px;"><strong>3. 在在Unix.i配置如下</strong></span></p><pre class="html" name="code"><p>%module Survey
</p><p> </p><p> </p><p> </p><p>%include "std_string.i"
%include "arrays_java.i"
%include "typemaps.i"
%include "enums.swg" </p><p> </p><p>%module(directors = 1) Unix  //加上这一句</p><p> </p><p>%{</p><p>#include <src\CPosiOffset.cpp></p><p>%}</p><p>%include <src\CPosiOffset.h></p><p> </p><pre class="html" name="code"><span style="font-size:12px;"><strong>4.Application
</strong></span>APP_CFLAGS += -fexceptions
APP_STL := gnustl_static
APP_PALTFORM := android-9 
 
<span style="font-size:12px;"><strong>5.Android</strong></span>
<p>LOCAL_PATH := $(call my-dir)</p><p>include $(CLEAR_VARS)</p><p>LOCAL_MODULE    := PosiLib
LOCAL_SRC_FILES := Unix_wrap.cxx</p><p>LOCAL_CPP_FEATURES += rtti</p><p>include $(BUILD_SHARED_LIBRARY)</p>
 
 
 
到这里就结束了,具体有些看不懂语句意思,可以复制去百度,其实ndk开发有很多类型,网上也有不同编译方法。我介绍四不用自已写包名什么,都是自动编译产生。
今天这个博客编辑器不知道出什么问题了,加了代码片段,就去除不了那个模式,所以排版有点难看。


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

标签:android   jni   ndk   

原文地址:http://blog.csdn.net/qq_16064871/article/details/45110367

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!