美文网首页
安卓上jni添加openGL后,编译报错undefined re

安卓上jni添加openGL后,编译报错undefined re

作者: __若只如初见 | 来源:发表于2020-06-24 11:50 被阅读0次

    1.undefined reference to问题,根本原因是找不到函数实现,也就是找不到库。
    2.导致找不到库的原因很多:

    • 在cmake中没设置GLES
    //CMakeLists.txt
    target_link_libraries( # Specifies the target library.
                           native-lib
                           GLESv3 )
    
    • 由于SDK18之后才支持GLESv3,如果最小SDK小于18,就会找不到GLESv3。所以最小SDK需要设置成18及以上,如下
    // build.gradle(:app)
    android {
        compileSdkVersion 29
        buildToolsVersion "30.0.0"
    
        defaultConfig {
            applicationId "com.yao.yaoplayerandroid"
            minSdkVersion 18
            targetSdkVersion 29
            versionCode 1
            versionName "1.0"
    ......
    
    • 插上真机可以编译过,不插真机/虚拟机,编译报错undefined reference to
      这可能是因为没有设置ABI---应用程序二进制接口。由于插真机会识别真机ABI,而不插真机就没有ABI导致报错。 设置abiFilters 决定了二进制文件如何与系统进行交互,设置ndk {abiFilters 'armeabi-v7a'} ,表示当前安卓工程支持的平台类型是 'armeabi-v7a'。
    // build.gradle(:app)
    android {
        compileSdkVersion 29
        buildToolsVersion "30.0.0"
    
        defaultConfig {
            //设置该安卓工程支持的平台类型 引用时
            ndk {
                abiFilters 'armeabi-v7a'
            }
          // 设置cmake编译时的abi  编译时
            externalNativeBuild {
                cmake {
                    cppFlags "-std=c++11"
                    abiFilters 'armeabi-v7a'
                }
            }
        }
    ......
    

    相关文章

      网友评论

          本文标题:安卓上jni添加openGL后,编译报错undefined re

          本文链接:https://www.haomeiwen.com/subject/gpxrfktx.html