尝试导入 OpenGL C++ 项目时应用程序崩溃

时间:2021-05-04 08:38:22

标签: android c++ opengl-es android-ndk

我是 Android NDK 的新手。我有一个 C++ 项目,它使用 OpenGL 绘制一个三角形。这个项目也有一些自定义库。我已经将它添加到我的 src/main/cpp 文件夹并编写了 CMakeLists.txt

cmake_minimum_required(VERSION 3.10.2)

project("triangleapp")

add_library(
        gl2jni
        SHARED
        tr.cpp)

add_library(
        tr_lib
        SHARED
        IMPORTED
)
set_target_properties(
        tr_lib
        PROPERTIES IMPORTED_LOCATION
        ${PROJECT_SOURCE_DIR}/tr_lib/tr_lib.c
)
find_library(
        log-lib
        log)

target_link_libraries(
        gl2jni
        android
        EGL
        GLESv2
        tr-lib
        ${log-lib})

还有我的活动代码:

 override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        glSurfaceView = findViewById(R.id.gl_surface_view)
        glSurfaceView.setRenderer(MyRenderer())
    }

    companion object {
        init {
            System.loadLibrary("gl2jni")
        }
        external fun drawTriangle(width: Float, height: Float)
    }

class MyRenderer() : GLSurfaceView.Renderer {
    override fun onDrawFrame(p0: GL10?) {
    }

    override fun onSurfaceChanged(p0: GL10?, p1: Int, p2: Int) {
        MainActivity.drawTriangle(p1.toFloat(), p2.toFloat())
    }

    override fun onSurfaceCreated(p0: GL10?, p1: EGLConfig?) {

    }
}

这里是draw方法的调用:

extern "C" JNIEXPORT void JNICALL
Java_kz_app_triangleapp_MainActivity_00024Companion_drawTriangle(JNIEnv *env, jobject obj,
                                                                 jfloat width, jfloat height) {
    auto *triangle = new Triangle();
    triangle -> draw(width, height, 1.0f, 0.0f);
}

当我运行项目时,应用程序崩溃并出现下一个错误: 致命信号 11 (SIGSEGV),代码 1 (SEGV_MAPERR),tid 2683 (GLThread 25452) 中的故障地址 0x0,pid 2644 有什么想法可以解决吗?

0 个答案:

没有答案
相关问题