如何使用C++;本机代码 我试图用Gradle C++的Android工作室建立的Android应用程序调用OpenGL ES 2的函数。

如何使用C++;本机代码 我试图用Gradle C++的Android工作室建立的Android应用程序调用OpenGL ES 2的函数。,c++,android-studio,android-gradle-plugin,opengl-es-2.0,C++,Android Studio,Android Gradle Plugin,Opengl Es 2.0,然而,当调用任何一个OpenGL函数时,我都会遇到链接器错误,而且我还没有找到原因 感觉它应该像以某种方式配置Gradle一样简单,但它只是不清楚如何做到这一点(特别是因为我几乎没有Gradle的经验) 我在以下Github位置为我的问题创建了一个非常简单的测试用例: 使用Android Studio打开该项目,您将看到未能链接到“native lib.cpp”文件中的代码 如果有人能够正确获得此建筑/链接,请让我知道我遗漏了什么 谢谢 转到您的CMakeLists.txt,将GLESv2添加到

然而,当调用任何一个OpenGL函数时,我都会遇到链接器错误,而且我还没有找到原因

感觉它应该像以某种方式配置Gradle一样简单,但它只是不清楚如何做到这一点(特别是因为我几乎没有Gradle的经验)

我在以下Github位置为我的问题创建了一个非常简单的测试用例:

使用Android Studio打开该项目,您将看到未能链接到“native lib.cpp”文件中的代码

如果有人能够正确获得此建筑/链接,请让我知道我遗漏了什么


谢谢

转到您的CMakeLists.txt,将GLESv2添加到目标链接库中。应该是这样的:

# Specifies libraries CMake should link to your target library. You
# can link multiple libraries, such as libraries you define in the
# build script, prebuilt third-party libraries, or system libraries.

target_link_libraries( # Specifies the target library.
                       native-lib

                       # Links the target library to the log library
                       # included in the NDK.
                       ${log-lib} 
                       GLESv2)

为什么不试试NDK官方的一个示例,hello-gl2你必须使用NDK build来构建cpp文件,这样cpp文件就可以作为一个静态库,Java将加载库来与之通信。谢谢@Sung,看着NDK示例,我找到了解决方法!谢谢你,安德拉斯-我实际上是通过看@Sung给我指的NDK例子来理解的,但我没有抽出时间来更新这个问题。你上面的答案正是我解决它的方法!