Android编译c++独立动态库模块时报错总结

因为工作需要,需要将uart的模块移植一下,此模块编译后是动态so,但移植时发现一直编译不过,有遇到以下两种报错,小结一下
1、第一种提示can not find xxx.h
这种情况是由于在编译的Android.mk中没有添加包含xxx.h目录的include的依赖,不会去下去找,所以才提示not find
如下添加进来即可
LOCAL_C_INCLUDES +=$(LOCAL_PATH)/../../common/support/
2、提示 error undefined reference to xxx(xxx一般表示 xxx.h某个接口)
这种的情况是由于找不到接口,为啥找不到呢,上网查了一下,因为在Android.mk中 没有添加包含此接口具体实现的lib库的依赖。因为此接口也是需要编译进到某个库,动态或者静态库,然后需要使用此接口的模块需要添加对此库的依赖才能找到接口的实现。
LOCAL_STATIC_LIBRARIES += libhitvsupport

LOCAL_SHARED_LIBRARIES := \
libhitvmw \

因为之前Android一直有在学习Java,对c++这块才初来试水。
对比一下,发现Java和c++在Android系统中的使用思想很类似。

在Java中,一般你需要使用某个类的话,你需要首先
import com.xxx.android.TvProgram;
1、通过把此类import进来,保证Java模块在编译的时候可以找到此类;
2、需要具体使用此类的一些方法的话,还需要在Android.mk中添加对类的方法实现模块的依赖,此类最后是以什么方式运行的,是静态还是动态库,Android.mk中需要去添加动态或静态依赖,才能正常编译通过。

在C++中,一般当你需要使用某个方法的话,你需要
1、把此包含此方法的xxx.h头文件在使用的文件里面include进来;
2、在编译模块的Android.mk中,
a.去添加包含xxx.h头文件的查找目录
LOCAL_C_INCLUDES +=$(LOCAL_PATH)/../../common/support/
b.去添加包含此方法具体实现的库的依赖,或静态或动态
LOCAL_STATIC_LIBRARIES += libhitvsupport

LOCAL_SHARED_LIBRARIES := \
libhitvmw \
只有这样才可以编译通过。

                                            2016-9-30
                                            上午 11:29
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值