NDK c 文件引用c++ 函数
来源:互联网 发布:淘宝卖的100多充气娃娃 编辑:程序博客网 时间:2024/06/14 02:39
问题:
由于之前编译的NDK 文件全部是.cpp 结尾,所以未曾出现c引用c++的函数的问题,最近由于要搞播放器,没办法很多之前的播放器都是c写的。
分析:
<1> NDK中默认的编译器应为gcc,如果是g++相信不存在.c 文件引用c++的一些特性出错的问题,比如#include <string>
因为g++ 把.c .cpp 结尾文件全部当做c++来编译,所以之后的所以就是没问题。
<2>鉴于是gcc,对于.c的文件会按照c来编译,所以#include <string > ,class ,namespace 都不被识别,因为c里根本没有这个;
而对于cpp文件,gcc会按照c++ 来编译,所以c++的特性都可以使用。
<3>所以之后的所以,如果在.cpp文件中定义 jni的函数,需要加上 extern "C" ,如
extern "C"
JNIEXPORT jint JNICALL Java_com_xxxxx_yyyyy_Native_start(JNIEnv *env, jclass class)
因.cpp 编译时会定义__cplusplus 宏,所以可更改为如下
#ifdef __cplusplus
extern "C" {
#endif
JNIEXPORT jint JNICALL Java_com_xxxxx_yyyyy_Native_start(JNIEnv *env, jclass class)
#ifdef __cplusplus
}
#endif
而对于.c文件这些就不需要了。
<4> 回归主题,如果需要c 调用c++ 函数,首先c++的头文件中不能包含c所没有的特性,其次所有提供的函数需要加上 extern "c"
如不正确,欢迎各位方家指正!!!!
- NDK c 文件引用c++ 函数
- Android NDK开发之引用纯C库文件
- NDK c函数详解
- c++-引用函数指针
- ndk c调用java函数
- ndk c调用java函数
- ndk c调用java函数
- 用ndk编译C文件
- NDK编译C/C++文件
- C语言 main.c如何引用另一c文件中的函数
- C++引用C函数例子
- 引用与函数(C++)
- Delphi引用C对象文件
- Delphi引用C对象文件
- C语言跨文件引用
- android ndk 调用C/C++函数
- Android 非NDK方式编译C文件
- NDK编译cpp和c文件
- ioctl 变成了 unlocked_ioctl
- gnome桌面的美化
- 黑马程序员——Java概述
- 【IOS 开发学习总结-OC-14】★★★objective-c面向对象之——KVO(键值监听)
- Cocos2dx的C++和Java的互相调用(EasyNDK)
- NDK c 文件引用c++ 函数
- SpringMVC中使用Interceptor拦截器
- test
- 测试要点1.0
- 常用的IOS动画效果
- 线性表之顺序表
- 并发下常见的加锁及锁的PHP具体实现
- javascript浏览器匹配
- [Manacher][HDU3613][Best Reward]