[Android-NDK编译] ndk 编译 c++ 兼容性问题汇总整理

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[Android-NDK编译] ndk 编译 c++ 兼容性问题汇总整理相关的知识,希望对你有一定的参考价值。

1.__int64找不到符号

采用int64_t来代替:
#if defined(__android__)
typedef int64_t __int64;
#endif
2.<sys/io.h>找不到
android下不需要直接引用该文件,用下面的宏去掉即可
#if !defined(__APPLE__) && !defined(__ANDROID__) #include <sys/io.h> #endif
3.SO_NOSIGPIPE找不到
SO_NOSIGPIPE在mac中存在,可惜在android中不存在。请使用MSG_NOSIGNAL来代替
#if defined(__ANDROID__) #define SO_NOSIGPIPE MSG_NOSIGNAL #endif
4.uint64_t, int64_t, uint32_t, int32_t等类似类型找不到
请检查你的头文件包含,将系统的头文件放在自已的头文件之前。因为你自己的头文件有可以定义了重复的类型,导致系统头文件出错。
5.S_IREAD、S_IWRITE或者__S_IREAD、__S_IWRITE找不到
请用S_IRUSR、S_IWUSR代替
6.pthread_cancel找不到
这个android并未实现,有一些替代方法,具体见:http://bbs.rosoo.net/thread-10289-1-1.html
7.getifaddrs, <ifaddr.h> 找不到
android并没有实现。不过谢天谢地,有人已经帮我们实现了。感谢一下他:
https://github.com/kmackay/android-ifaddrs
8.<sys/statvfs.h>找不到
请用此来代替:
#if defined(__ANDROID__) #  include <sys/vfs.h> #  define statvfs statfs #else #  include <sys/statvfs.h> #endif

以上是关于[Android-NDK编译] ndk 编译 c++ 兼容性问题汇总整理的主要内容,如果未能解决你的问题,请参考以下文章

(OK) 编译xerces-c-3.1.2(静态库)—CentOS 7— android-ndk

(OK) 编译xerces-c-3.1.2(动态库)—CentOS 7— android-ndk

FFmpeg4.1编译:mac+android-ndk-14b+ffmpeg4.1成功编译

FFmpeg4.1编译:mac+android-ndk-14b+ffmpeg4.1成功编译

如何用Android NDK编译FFmpeg

android开发,怎么使用ndk编译成.so文件