Android studioはc++とcを混合してコンパイルするのはあまり発見されない穴に遭遇します

2058 ワード

1.プロジェクト統合ffmpeg、copyはいくつかのファイルをプロジェクトに統合してffmpegのコマンドを実行しやすい.Javaと直接対話するファイルはcppファイルで、コンパイル時には融通がきかず、ずっとヒントを与えています」と一致しません.ニマは午後何の問題も見られなかったが、cmdutilsを発見した.cにはclassというメソッドのパラメータがあり、その後この名前を変えてコンパイルに成功しました.本当に毒があります.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でいいです.