android studio使用c++与c混合编译是遇到不太好发现的坑
2018-01-09 17:21
1141 查看
1.项目集成ffmpeg,copy了几个文件到项目里方便执行ffmpeg的命令。直接和java交互的文件是cpp文件,然后编译的时候死活通不过,一直提示”)”不匹配。尼玛的搞了一下午没看出什么问题,后来才发现cmdutils.c中有个方法的参数名为class,之后把这个名字换了一个就编译成功了,真的是有毒。
2.网上找的一个日志文件。
本来这文件没什么问题,可是ffmpeg添加日志的回调的时候,死活用不了,LOGD居然被定义成了LOG_NOOP,原因就是#define IS_DEBUG true 。C语言不认识true,所以直接无法使用,改成#define IS_DEBUG 1就好了。
2.网上找的一个日志文件。
// // Created by TY on 2018/1/8. // #ifndef SVTOOL_LOGUTILS_H_H #define SVTOOL_LOGUTILS_H_H #include "android/log.h" #ifndef LOG_TAG #define LOG_TAG "JNI" #endif #ifndef IS_DEBUG #define IS_DEBUG true #endif #define LOG_NOOP (void) 0 //__FILE__ 输出文件名 //__LINE__ 输出行数 //__PRETTY_FUNCTION__ 输出方法名 //可以按需选取 %s %u %s 分别与之对应 #define LOG_PRINT(level,fmt,...) __android_log_print(level,LOG_TAG,"tedu(%s:%u) %s: " fmt,__FILE__,__LINE__,__PRETTY_FUNCTION__,##__VA_ARGS__) //通过IS_DEBUG来控制是否输出日志 #if IS_DEBUG #define LOGW(fmt,...) LOG_PRINT(ANDROID_LOG_WARN,fmt ,##__VA_ARGS__) #else #define LOGW(...) LOG_NOOP #endif #endif //SVTOOL_LOGUTILS_H_H
本来这文件没什么问题,可是ffmpeg添加日志的回调的时候,死活用不了,LOGD居然被定义成了LOG_NOOP,原因就是#define IS_DEBUG true 。C语言不认识true,所以直接无法使用,改成#define IS_DEBUG 1就好了。
相关文章推荐
- ubuntu 使用cmake 编译 C++ 及 遇到到问题
- C/C++ 混合编译之extern C的使用
- Linux下使用Eclipse编译C/C++代码时遇到问题的说明
- android studio 使用NDK和swig编译c++示例
- android studio中使用ndk编译.so文件,调用C/C++代码(jni编程)
- Vs.Net2008中混合使用C/C++遇到的问题
- android studio使用jni编译c++代码
- matlab文件编译成库在C++环境下使用遇到的问题记录
- MFC工程中使用sqlite3源代码--c和c++代码混合编译出错解决
- 混合编译:在c中使用c++中的类对象和类成员函数
- 使用javac编译java文件和使用javah生成C/C++头文件 遇到找不到类的问题
- C和C++的混合编译--extern “C”的使用
- ubuntu 使用gcc 编译 C++ 及 遇到到问题
- (转)c++--使用CURL库在编译时遇到的问题
- C/C++ 混合编译之extern C的使用
- Python游戏服务器开发日记(四)scons编译工具、C和C++混合使用
- 使用NDK 编译C/C++程序遇到 crtbegin_so.o: No such file or directory 等错误
- C++ 调用C 文件遇到的编译问题
- C++中位结构的使用注意及#pragma预编译指令的作用
- 使用vs2005的c++在编译智能设备的应用程序出现的bug