Error: undefined reference to `glCreateShader'-Android NDK OpenGLES

通过NDK调用OpenGLES时,发现报错许多gl开头的方法未定义,具体如下:



奇怪的是,报错的方法还可以点击去。网上查询结果 大部分是修改让Android.mk

原因是 未配置链接OpenGLES库文件。



可是我用的是Android Studio 2.3.3 NDK开发根本看不到Android.mk,只有一个CMakeList.txt


那就在CMakeLists.txt文件中加入

set(opengl-bil GLESv2),这个是opengles2.0的,1.0和3.0没实验过

再在target_link_libraries内添加

target_link_libraries(opengl-bil)和上边的名字相对应

发现上边写错了应该是target_link_libraries(${opengl-bil})

其实还可以更简单,直接加到target_link_libraries

target_link_libraries(GLESv2)

不需要上边的set,也不需要加大括号,直接拿库名引用

然后可以在c文件内引用了

#include <GLES2/gl2.h>

opengles 1.0是GLESv1_CM

具体代码如下:

# 指定cmake版本
cmake_minimum_required(VERSION 3.4.1)

# add_library()命令用于向CMake添加依赖源文件或库
# 指令需传入三个参数(函数库名称、库类型、依赖源文件相对路径)
add_library(  # 生成函数库的名称,即libnative-lib.so或libnative-lib.a(lib和.so/.a默认缺省)
             gl2jni

           # 生成库类型:动态库为SHARED,静态库为STATIC
             SHARED

            # 依赖的c/cpp文件(相对路径)
             src/main/cpp/gl_code.cpp )

# find_library()命令用于定位NDK中的库
# 需传入两个参数(path变量、ndk库名称)
find_library(  # 设置path变量的名称,这里为NDK中的日志库
              log-lib

              #指定cmake查询库的名称
              #即在ndk开发包中查询liblog.so函数库,将其路径赋值给log-lib
              log )

#target_link_libraries()命令用于指定要关联到的原生库的库
target_link_libraries( # 指定目标库,与上面指定的函数库名一致
                       gl2jni
                        #链接OpenGLES 2.0
                       GLESv2
                       # 链接的库,根据log-lib变量对应liblog.so函数库
                       ${log-lib}
                       )


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值