我是 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 有什么想法可以解决吗?