通过SWIG生成jni代码
来源:互联网 发布:知几是什么意思 编辑:程序博客网 时间:2024/05/23 17:04
1、在jni文件夹下面创建Unix.i
/*模块名 Unix*/
//每次调用SWIG都需要指定一个模块名,模块名用于给生成的封装文件命名
%module Unix
%{
/*包含POSIX操作系统API*/
#include <unistd.h>
%}
/*告诉SWIG uid_t.*/
typedef unsigned int uid_t;
/*让SWIG 包装 getuid函数*/
extern uid_t getuid(void);
2、在src下面创建com/apress/swig目录
3、通过swig -java -package com.apress.swig -outdir src/com/apress/swig jni/Unix.i在swig目录下创建Unix和UnixJNI类
4、在jni文件夹下面创建my-swig-generate.mk文件
#
#Android构建系统的SWIG扩展
#
#检查变量 MY_SWIG_PACKAGE 是否已经定义
ifndef MY_SWIG_PACKAGE
$(error MY_SWIG_PACKAGE is not defined.)
endif
#用斜线替换java目录中的圆点
MY_SWIG_OUTDIR:= $(NDK_PROJECT_PATH)/src/$(subst .,/,$(MY_SWIG_PACKAGE))
#SWIG的默认类型是C
ifndef MY_SWIG_TYPE
MY_SWIG_TYPE := c
endif
#设置SWIG模式
ifeq ($(MY_SWIG_TYPE),cxx)
MY_SWIG_MODE := -c++
else
MY_SWIG_MODE :=
endif
#追加SWIG封装源文件
LOCAL_SRC_FILES+=$(foreach MY_SWIG_INTERFACE,\
$(MY_SWIG_INTERFACES),\
$(basename $(MY_SWIG_INTERFACE))_wrap.$(MY_SWIG_TYPE))
#LOCAL_SRC_FILES+=$(foreach MY_SWIG_INTERFACE,\
# $(MY_SWIG_INTERFACES),\
# $(basename $(MY_SWIG_INTERFACE))_wrap.$(MY_SWIG_TYPE))
#添加.cxx作为c++扩展名
LOCAL_CPP_EXTENSION += .cxx
#生成SWIG封闭代码(indention should be tabs for this block)
%_wrap.$(MY_SWIG_TYPE) : %.i
$(call host-mkdir,$(MY_SWIG_OUTDIR))
swig -java \
$(MY_SWIG_MODE) \
-package $(MY_SWIG_PACKAGE) \
-outdir $(MY_SWIG_OUTDIR) \
$<
5、在mk文件中添加
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := hello-jni
#LOCAL_SRC_FILES := hello-jni.c
MY_SWIG_PACKAGE := com.apress.swig
MY_SWIG_INTERFACES := Unix.i
MY_SWIG_TYPE := c
include $(LOCAL_PATH)/my-swig-generate.mk
include $(BUILD_SHARED_LIBRARY)
6、在jni文件夹下使用ndk-build
- 通过SWIG生成jni代码
- Android 使用SWIG生成Jni代码
- Android 使用SWIG生成Jni代码
- 使用SWIG自动生成JNI代码
- 使用SWIG自动生成JNI代码
- SWIG构建Jni代码
- Android Studio JNI学习之(3)-使用SWIG自动生成Jni代码
- 通过SWIG封装C/C++代码被Python调用
- android 使用swig工具, 依据JNI文件快速生成对应java文件
- linux下通过jni编译CUDA代码生成动态链接库遇到的问题 nvcc -fPIC
- SWIG封装C代码
- 通过代码生成TableRow
- java通过JNI调用c++代码
- java通过JNI调用c++代码
- Java 通过 Jni 调用 C++代码
- Android:通过JNI调用c++代码
- C++ 通过 JNI 调用 Java 代码
- Android NDK项目中使用SWIG生成JAVA类和C/C++封装代码
- 对n个数字右移k位
- assertRegex的报错
- java
- Oracle数据库sysdba、sysoper权限问题
- 机器学习实战之 k近邻算法 原理及代码实现
- 通过SWIG生成jni代码
- ICPC2017网络赛(沈阳)number number number
- 【BashuOJ2276】月饼盒-矩阵型DP
- Github使用教程(二)------ Github客户端使用方法
- 树莓派(中级篇)--Java环境搭建
- mongodb之lnmp初体验
- RecyclerView的局部刷新
- 如何解决Win10系统下自带IE11无法使用IE10、IE9、IE8等在线考试报名
- bzoj2958序列染色