ubuntu PJSIP编译java库及jni生成,开放新jni接口
来源:互联网 发布:php超链接怎么做 编辑:程序博客网 时间:2024/05/16 06:43
1、环境搭建参照
http://blog.csdn.net/croop520/article/details/75332990
编译参照
https://trac.pjsip.org/repos/wiki/Getting-Started/Android#OtherAndroidprojects
2、进入pjproject-2.6目录执行以下命令
#NDK目录export ANDROID_NDK_ROOT=/home/sip/android-ndk-r13b #安卓CPU x86 编译器版本4.9 安卓平台5.1TARGET_ABI=x86 NDK_TOOLCHAIN_VERSION=4.9 APP_PLATFORM=android-22 ./configure-android --use-ndk-cflags make dep && make clean && make
生成jni
进入pjproject-2.6/pjsip-apps/src/swig目录,执行
$make
生成的东西就在pjproject-2.6/pjsip-apps/src/swig/java中
3、在现有的库中,增加.c和.h
例:新增如下文件
pjproject-2.6\pjsip\src\pjsip\sushj_test1.c
pjproject-2.6\pjsip\include\pjsip\sushj_test1.h
其中.h 为
#ifndef __SUSHJ_TEST1_H__#define __SUSHJ_TEST1_H__#include <pjsip/sip_msg.h>PJ_BEGIN_DECLtypedef struct sushj_test_struct1{ pj_str_t a; pj_uint32_t b; pj_int32_t c; } sushj_test_struct1;PJ_DEF(pj_bool_t) sushj_test_copy1(sushj_test_struct1 *dst, sushj_test_struct1 *src);PJ_END_DECL#endif .c 为#include <pjsip/sushj_test1.h>PJ_DEF(pj_bool_t) sushj_test_copy1(sushj_test_struct1 *dst,sushj_test_struct1 *src){ /*pj_strcpy(dst->a, src->a);*/ dst->b = src->b; dst->c = src->c; return PJ_TRUE;}
修改Makefie,增加sushj_test.o目标
vim pjsip/build/Makefile# Defines for building PJSIP core library#export PJSIP_SRCDIR = ../src/pjsipexport PJSIP_OBJS += $(OS_OBJS) $(M_OBJS) $(CC_OBJS) $(HOST_OBJS) \ sip_config.o sip_multipart.o \ sip_errno.o sip_msg.o sip_parser.o sip_tel_uri.o sip_uri.o \ sip_endpoint.o sip_util.o sip_util_proxy.o \ sip_resolve.o sip_transport.o sip_transport_loop.o \ sip_transport_udp.o sip_transport_tcp.o \ sip_transport_tls.o sip_auth_aka.o sip_auth_client.o \ sip_auth_msg.o sip_auth_parser.o \ sip_auth_server.o \ sip_transaction.o sip_util_statefull.o \ sip_dialog.o sip_ua_layer.o \ sushj_test1.o
然后重新生成依赖和编译:
make dep && make
4、开放jni数据类型接口
还是以上面为例,进入pjproject-2.6/pjsip-apps/src/swig
安装python解析器
sudo apt-get -y install python-pycparser
或者直接去下载
https://pypi.python.org/pypi/pycparser/
下载下来,解压后,进入执行
python setup.py install
因安装pycparser目录与pjsip里写的不一样。修改pjproject-2.6/pjsip-apps/src/swig目录下的importsym.py里的如下目录
# PYCPARSER_DIR="/home/bennylp/Desktop/opt/src/pycparser-master" PYCPARSER_DIR="/usr/share/python-pycparser/"#if not os.path.exists(PYCPARSER_DIR + '/utils/fake_libc_include'):if not os.path.exists(PYCPARSER_DIR + '/fake_libc_include'):# '-I' + PYCPARSER_DIR + '/utils/fake_libc_include', '-I' + PYCPARSER_DIR + '/fake_libc_include',
修改swig目录下symbols.lst,增加要开放的结构体
pjsip/sushj_test1.h sushj_test_struct1
在pjproject-2.6/pjsip-apps/src/swig目录下执行
make symbols
如果报
pycparser.plyparser.ParseError: /usr/share/python-pycparser//fake_libc_include/_fake_typedefs.h:96:9: Invalid declarationMakefile:35: recipe for target 'symbol' failed
找到pycparser中的_fake_typedefs.h对应的行,注释掉报错行,重新make。
/*typedef int jmp_buf;*/
5、开放函数接口
swig目录的pjsua2.i结尾增加:
pj_bool_t sushj_test_copy1(sushj_test_struct1 *dst, sushj_test_struct1 *src);
重新make就好了。
- ubuntu PJSIP编译java库及jni生成,开放新jni接口
- Java中JNI接口
- Android NDK 交叉编译 FFMPEG 及使用JNI接口
- JNI 生成C++接口方法.
- Java JNI编译小记
- java jni编译
- ubuntu下编译JNI程序
- ubuntu下编译JNI程序
- ubuntu下编译JNI程序
- Ubuntu下编译JNI程序
- ubuntu编写jni并编译
- JNI调用java的接口
- JAVA本地接口(JNI)
- JNI调用java接口函数
- Ubuntu下,Java中利用JNI调用codeblocks c++生成的动态库的使用步骤
- Ubuntu下,Java中利用JNI调用codeblocks c++生成的动态库的使用步骤
- java之native及jni生成dll总结
- Jni接口
- 网站建站流程
- OpenCV3_C++_Laplacian()拉普拉斯滤波处理 实例
- Lumen 查询执行SQL
- SQL中SELECT INTO和INSERT INTO SELECT语句
- android studio 运行coco2dx 的小问题
- ubuntu PJSIP编译java库及jni生成,开放新jni接口
- 打造自己的 APP「冰与火百科」(三):Material Design 控件
- poj 2109
- YII2验证码
- OpenCV3_C++_Sobel()sobel边缘检测 实例
- Androidstudio 出现 Call requires API level 24(current minimum is 15):android.icu.util.calendar 问题时的办法
- 正则表达式总结(二)重复
- 问题:C++编写的核心模块如何暴露给外部HTTP Web服务接口???
- 图片都没有显示出来的更多资料在我的印象笔记中