jrtplib for android,Jthread1.3.1 Jrtplib3.9.1跨平台交叉编译之Android(二)

本文记录了作者在使用Android NDK在Windows环境中编译Jthread库的详细过程,包括源码导入、配置文件修改、头文件定义和解决编译错误的技巧,重点强调了Config.h文件的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

平台式互通的,代码风格也相似。之前的折腾,领悟,今天很快就在ndk 上测试通了.这类文章极少,随意记录下

1.平台

win7 android-ndk-r8d

2.源码导入到Jni目录下

肯定出错,大原则不要改动源代码。否则,会花很大时间调试,最终还不了了之,但配置文件,路径等可以修改。

jni下建两个目录分别为Jthread和Jrtplib导入相关源码

先说明一个问题:上篇文章提到是XXX.h.in文件,就是配置前文件,它很特殊。cmake可以配置,可是不太熟悉。tool目录下test程序运行中,会检测平台win/liunx/unix,支持ipv4/6等,最终生成define。但本次是ndk编译,这些都谈不上,所以自己得定义。缺什么,补什么。刚开始编译就会出现jthreadcongfig.h找不见。

JTHREADCONFIG_H.in

/*

*/

#ifndef JTHREADCONFIG_H

#define JTHREADCONFIG_H

#define JTHREAD_IMPORT

#define JTHREAD_EXPORT

#ifdef JTHREAD_COMPILING

#define JTHREAD_IMPORTEXPORT JTHREAD_EXPORT

#else

#define JTHREAD_IMPORTEXPORT JTHREAD_IMPORT

#endif // JTHREAD_COMPILING

// using win32

//#define JTHREAD_CONFIG_WIN32THREADS 默认好像是liunx平台,也可查找相关定义。一旦有这个定义就只加载winsock2.h等win头文件

#endif // JTHREADCONFIG_H定义完,改成.h,其他类似。缺少文件,找准地方,看好上下ifdef后面的字符串,就知道该怎么定义了。至少能分清吧。

3.android.mk

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE := my-jni

LOCAL_SRC_FILES:= \jrtplib/tools/gettypes.cpp \

jrtplib/rtcpapppacket.cpp \

jrtplib/rtcpbyepacket.cpp \

jrtplib/rtcpcompoundpacket.cpp \

jrtplib/rtcpcompoundpacketbuilder.cpp \

jrtplib/rtcppacket.cpp \

jrtplib/rtcppacketbuilder.cpp \

jrtplib/rtcprrpacket.cpp \

jrtplib/rtcpscheduler.cpp \

jrtplib/rtcpsdesinfo.cpp \

jrtplib/rtcpsdespacket.cpp \

jrtplib/rtcpsrpacket.cpp \

jrtplib/rtpcollisionlist.cpp \

jrtplib/rtpdebug.cpp \

jrtplib/rtperrors.cpp \

jrtplib/rtpinternalsourcedata.cpp \

jrtplib/rtpipv4address.cpp \

jrtplib/rtpipv6address.cpp \

jrtplib/rtplibraryversion.cpp \

jrtplib/rtppacket.cpp \

jrtplib/rtppacketbuilder.cpp \

jrtplib/rtppollthread.cpp \

jrtplib/rtprandom.cpp \

jrtplib/rtpsession.cpp \

jrtplib/rtpsessionparams.cpp \

jrtplib/rtpsessionsources.cpp \

jrtplib/rtpsourcedata.cpp \

jrtplib/rtpsources.cpp \

jrtplib/rtptimeutilities.cpp \

jrtplib/rtpudpv4transmitter.cpp \

jrtplib/rtpudpv6transmitter.cpp \

jrtplib/jthread.cpp \

jrtplib/jmutex.cpp \

jrtplib/rtprandomurandom.cpp \

jrtplib/rtprandomrand48.cpp \

jrtplib/rtpexternaltransmitter.cpp

LOCAL_EXPORT_C_INCLUDES:=$(LOCAL_C_INCLUDES)LOCAL_PRELINK_MODULE := false APP_STL := stlport_static include $(BUILD_STATIC_LIBRARY)

不要用 $(wildcard $(LOCAL_PATH)/*.cpp),加载顺序不对,会出错滴。

4.application.mk

APP_STL := stlport_static

APP_MODULES := my-jniOK ,后面再测试联通,vc6.0编译过了

vc6.0编译,用好cmake,会很快的,可以结合这两篇博文,不在赘述,测试通过。

http://blog.163.com/zhujiatc@126/blog/static/183463820133886426/

http://blog.sina.com.cn/s/blog_4e87ac6e01009vif.html

下步测试PC和android联通,补充一点ndk虽然没有去大小端,但是可以自己define,也就不用像之前该Cmakelist,总之Config.h文件很重要,自己琢磨。

36ce44718b809ced46695fc02fc4682e.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值