NDKコンパイルundefined reference toエラー


         ,          , Android     C++           ,      jni。
   .h,.cpp,Android.mk,Application.mk   ,  ndk-build  .so  ,    .so           "Error: undefined reference to `glGetError'“   。
       .cpp               ,         ,.cpp      。
       Android.mk  ,     LOCAL_LDLIBS:= -lGLESv2。
      ,       。    ,    。      ,         。

理由:デフォルトでは、src/main/jniフォルダが存在する場合、gradle生成スクリプトはndkコンパイル生成操作を実行するが、コンパイル生成方式は以前のようにndk-buildでAndroidを処理するわけではない.mk Application.mkなどはc/c++コードのコンパイルリンクを行い、一時ファイルパスで新しいmkファイルを再生成しndkコンパイルプロジェクトとするため、logライブラリが正常にリンクされず、定義が見つからない.
解決方法:appディレクトリの下にあるbuild.gradleにandroid{を追加する構成:(android{}に追加することに注意)sourceSets.main{jni.srcDirs=[jniLibs.srcDir'src/main/libs]}はデフォルトのjniコンパイル生成プロセスを遮断するため、gradle生成を実行する際にjniの生コードを処理することなく、ndk-buildを手動で呼び出すことでsoダイナミックリンクライブラリを生成し、次のjniLibsを生成する.src Dir再配置生成ライブラリフォルダがndk-buildのデフォルトで生成されたlibsフォルダ(このデフォルトはsrc/main/jniLibsで、もちろんデフォルトでjniスクリプトを生成して実行に成功した場合は、そのままにしたい場合は手動でndk-buildを実行するときの生成経路を変更してもよい)、このときにデバッグ実行を再実行するとnativeライブラリファイルを正しく埋め込むことができます.