2017-07-03 11 views
2

Androidスタジオでリンカエラーが発生すると、-vを使用して呼び出しを表示するように勧められますが、 「冗長出力」(according to llvm clang command guide)を取得しますか?clangの-vを使用して未定義の参照エラーを詳細に出力する方法(Android-Studio)

はすでに試した:私が気づい限り出力に何も変更されていない

externalNativeBuild { 
      cmake { 
       cppFlags "-frtti -fexceptions -v" 
      } 
     } 

--stacktrace --debug

Settings > Compiler > Command-line Options 

どのように出力を表示していますが、私が探しているものではありません!
あらかじめご協力いただきありがとうございます。

EDIT

私は明らかにCFLAGSを使用していたCファイルをコンパイルしておりますので。

apply plugin: 'com.android.application' 

android { 
    compileSdkVersion 25 
    buildToolsVersion "25.0.3" 
    defaultConfig { 
     applicationId "<my_id>" 
     minSdkVersion 16 
     targetSdkVersion 25 
     versionCode 1 
     versionName "1.0" 
     testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" 
     externalNativeBuild { 
      cmake { 
       cFlags "-v" 
      } 
     } 
    } 
    buildTypes { 
     release { 
      minifyEnabled false 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
     } 
    } 
    externalNativeBuild { 
     cmake { 
      path "CMakeLists.txt" 
     } 
    } 
} 

dependencies { 
    compile fileTree(dir: 'libs', include: ['*.jar']) 
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', { 
     exclude group: 'com.android.support', module: 'support-annotations' 
    }) 
    compile 'com.android.support:appcompat-v7:25.3.1' 
    compile 'com.android.support.constraint:constraint-layout:1.0.1' 
    testCompile 'junit:junit:4.12' 
} 

EDIT 2

私は、彼らが持っていたしません気づいていないいくつかのC-クラスで、次のプリプロセッサコマンドを追加:(@AlexコーンにTHX)は、次のように今のGradleファイルが見えますそれ、私が行方不明参照についての私のリンカエラーを取り除くことができました:

#ifdef __cplusplus 
extern "C" 
{ 
#endif 

// your includes and your code here 

#ifdef __cplusplus 
} 
#endif 
+0

あなたは 'cppFlags" -frtti、-fexceptions、-v "'を試しましたか? –

+0

ちょうど成功なしに試みました。 cppFlags "-frtti -fexceptions"が自動生成され、-vが追加されました.btw –

+1

これは変です。実際には、私のためにカンマで区切られたリストと引用符付きの文字列の両方がスペースで動作します。 'app/.externalNativeBuild/cmake/debug/armeabi-v7a/android_gradle_build.json'ファイルをチェックしてください。しかし、私は仮説を持っています。多分あなたはCファイルをコンパイルしていますか? –

答えて

1
  1. cppFlags "-frtti -fexceptions -v"作品だけでなく、xxx clang ++タスクのための3210、つまり、.cppまたは.cxxのコンパイル出力を得るためのタスク。

  2. cFlags "-v".cファイルのコンパイル時に冗長出力を生成するように動作します。例えば、リンクのステップのための詳細な出力を生成し、あなたのCMakeLists.txtファイルを編集して、関連するtarget_link_libraries声明に-vを追加するには

  3. 上記のすべての

    target_link_libraries(myjnilib android log -v) 
    
  4. 未定義の参照にエラーを理解し、解決するには十分ではないかもしれません。
+1

In私のケースでは、リンカエラーは、いくつかのCファイルでプリプロセッサのコマンドが見つからなかった(私の答えのUpdate 2を見てください)。私はJavaのインターフェイスとしてAndroid Studioで作成されたデフォルトの.cppファイルを使用していたので、クラス...ありがとうございました。@Alex Cohn –

+0

おかげさまで、設定>ビルド、実行、デプロイメント(AS 3.0)のコマンドラインオプションとして "--debug"を設定してくれました。不足しているリンカー参照を見ることができる - あなたのリストにこれを追加することを検討する –

関連する問題