关于使用androidstudio2.2通过CMake,NDK开发OpengGL程序中出现的extern “C”问题
来源:互联网 发布:java判断是否是空格 编辑:程序博客网 时间:2024/06/08 05:52
开发环境android studio 2.2
android 6.0 API23
CMake 3.6.3155560
LLDB2.3.3614996
NDK 14.0.3770861
通过配置CMake的的方式开发NDK程序,如下是可以正常运行的代码:
extern "C" {JNIEXPORT void JNICALL Java_com_example_administrator_ndk_1test_GLES3JNILib_init(JNIEnv* env, jobject obj){ // TODO if (g_renderer) { delete g_renderer; g_renderer = NULL; } printGlString("Version", GL_VERSION); printGlString("Vendor", GL_VENDOR); printGlString("Renderer", GL_RENDERER); printGlString("Extensions", GL_EXTENSIONS); const char* versionStr = (const char*)glGetString(GL_VERSION); if (strstr(versionStr, "OpenGL ES 3.") && gl3stubInit()) { g_renderer = createES3Renderer(); } else if (strstr(versionStr, "OpenGL ES 2.")) { g_renderer = createES2Renderer(); } else { ALOGE("Unsupported OpenGL ES version"); }}JNIEXPORT void JNICALL Java_com_example_administrator_ndk_1test_GLES3JNILib_resize(JNIEnv* env, jobject obj, jint width, jint height){ if (g_renderer) { g_renderer->resize(width, height); }}JNIEXPORT void JNICALL Java_com_example_administrator_ndk_1test_GLES3JNILib_step(JNIEnv* env, jobject obj){ if (g_renderer) { g_renderer->render(); }}};
如下是会崩溃的程序代码:
extern "C" {JNIEXPORT void JNICALL Java_com_example_administrator_ndk_1test_GLES3JNILib_init(JNIEnv* env, jobject obj);
JNIEXPORT void JNICALL Java_com_example_administrator_ndk_1test_GLES3JNILib_resize(JNIEnv* env, jobject obj, jint width, jint he;JNIEXPORT void JNICALL Java_com_example_administrator_ndk_1test_GLES3JNILib_step(JNIEnv* env, jobject obj);};
JNIEXPORT void JNICALL Java_com_example_administrator_ndk_1test_GLES3JNILib_init(JNIEnv* env, jobject obj){ // TODO if (g_renderer) { delete g_renderer; g_renderer = NULL; } printGlString("Version", GL_VERSION); printGlString("Vendor", GL_VENDOR); printGlString("Renderer", GL_RENDERER); printGlString("Extensions", GL_EXTENSIONS); const char* versionStr = (const char*)glGetString(GL_VERSION); if (strstr(versionStr, "OpenGL ES 3.") && gl3stubInit()) { g_renderer = createES3Renderer(); } else if (strstr(versionStr, "OpenGL ES 2.")) { g_renderer = createES2Renderer(); } else { ALOGE("Unsupported OpenGL ES version"); }}
JNIEXPORT void JNICALL Java_com_example_administrator_ndk_1test_GLES3JNILib_resize(JNIEnv* env, jobject obj, jint width, jint height){ if (g_renderer) { g_renderer->resize(width, height); }}JNIEXPORT void JNICALL Java_com_example_administrator_ndk_1test_GLES3JNILib_step(JNIEnv* env, jobject obj){ if (g_renderer) { g_renderer->render(); }}
原因?
0 0
- 关于使用androidstudio2.2通过CMake,NDK开发OpengGL程序中出现的extern “C”问题
- AndroidStudio2.2 Preview3中NDK开发之CMake和传统 JNI在目录结构和配置文件上的区别
- AndroidStudio2.2 Preview3中NDK开发之CMake和传统 JNI在目录结构和配置文件上的区别
- AndroidStudio2.2中NDK开发之CMake和传统 JNI在目录结构和配置文件上的区别
- AndroidStudio2.2下利用CMake编译方式的NDK opencv开发
- AndroidStudio2.2开发NDK
- AndroidStudio2.2 使用NDK
- AndroidStudio2.2开发NDK的正确姿势
- AndroidStudio2.2开发NDK的正确姿势
- AndroidStudio2.2之NDK开发
- AndroidStudio2.2进行NDK开发
- AndroidStudio2.2.3版本使用CMake编译NDK工程(ffmpeg)
- AndroidStudio2.3 NDk Cmake配置
- Cmake使用中出现的问题
- 关于 extern "C" 的问题
- 关于extern "C" 的问题
- NDK开发第一课:了解AndroidStudio2.2+全新的NDK开发方式及与传统方式开发的区别
- Android NDK 开发:CMake 使用
- 查找两个字符串a,b中的最长公共子串
- Adapter类型的区别
- sql hash join VS nested loop
- 在Docker中运行ONOS
- Ajax参数之dataType
- 关于使用androidstudio2.2通过CMake,NDK开发OpengGL程序中出现的extern “C”问题
- Boolean Expressions
- Uva12166
- 如何将ffmpeg的dll放置到任意位置?
- Oracle保留字符字段
- WPF+MVVM数据绑定问题集锦
- ORACLE简繁转换函数
- 学习资料 存储过
- 极光推送的步骤