eclipse编译cpp文件,并且引用其他预编译的库

eclipse编译cpp文件,并且引用其他预编译的库,第1张

jni相关的单独放在一个文件夹内,包括

注意点有:

1.前面两个库的引用基本是固定写法,结尾写成

include $(PREBUILT_SHARED_LIBRARY)

2.第三个库为main.cpp,是我们要编译的库,它引用其他.so库的时候,用

3.新建项目默认是没有ndk环境的,需要右键项目AndroidTools里启用NDK环境,如果没有这一步,项目是没有obj文件夹的,之后ndk-build也不会正常编译

这就是一个普通的.cpp文件,所以很多写法要遵守cpp的格式来写,比如头文件的引入,方法的重复定义报的错,都需要一修改

这一步比较简单,命令行进入jni文件夹下,运行ndk-build即可,期间可能会遇到各种问题,百度解决即可,此时的主要问题一般是cpp文件编译的问题

1.遇到一个编译waning问题

在Application.mk中加入这个即可

忽略warning,防止编译不通过

APP_CFLAGS += -Wno-error=format-security

为了编译情况,需要了解一些 常见的 clang 命令

可以看出类的内存:

在OBJC_CLASS_SETUP_$_LGPerson LGPerson的赋值函数中。

cache被赋值了_objc_empty_cache

相关参考和验证: isa的探究

存储着累定义的成员变量,属性,方法,协议数据。相当于源码中的class_ro_t。 由此可以理解 class_ro_t 是编译过程中已经确定的了,可以计算类的空间大小。

struct LGPerson_IMPL 可以看作一个实例对象的世纪内存:

属性会在数量列表中,也会在成员列表中。另外属性也会生成对应的get/set方法。根据修饰词的不同,调用objc_setProperty 并传入不同的参数

在oc中定义的方法,生成了对应的C函数。第一个参数是对象地址。然后会被存储到class_ro_t 的方法列表中

_class_t是类的结构体。有四个成员

使用 clang -rewrite-objc 名称生成oc类对应的编译的cpp文件,主要是为了配合源码学习和了解类的属性,成员变量,方法,协议是怎么存储以及对应到oc源码中的。

caffe实战书籍中提供的编译选项是在cpu-only模式下可以正常编译的,但是如果是使用GPU模式的,就需要将Opencv和Cuda的动态库也链接进来。

.cpp文件如下,

caffe-cpu的情况下

caffe-gpu的情况下

如果使用上面的命令就会提示

编译后可能会出现警告信息,可以不用理会,此时还要注意有没有添加环境变量

运行 /.app ,就可以看到执行效果。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/11536101.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-16
下一篇 2023-05-16

发表评论

登录后才能评论

评论列表(0条)

保存