Android 使用NDK编译会导致成功包含的头文件出错
My app.cpp:Android 使用NDK编译会导致成功包含的头文件出错,android,android-ndk,java-native-interface,Android,Android Ndk,Java Native Interface,My app.cpp: #include "app.h" #include <EGL/egl.h> #include <EGL/eglext.h> void Java_com_geek_hello_FilterStack_nativeEglSetFenceAndWait(JNIEnv* env, jobject thiz) { EGLDisplay display = eglGetCurrentDisplay(); // Create a egl fenc
#include "app.h"
#include <EGL/egl.h>
#include <EGL/eglext.h>
void
Java_com_geek_hello_FilterStack_nativeEglSetFenceAndWait(JNIEnv* env, jobject thiz) {
EGLDisplay display = eglGetCurrentDisplay();
// Create a egl fence and wait for egl to return it.
// Additional reference on egl fence sync can be found in:
// http://www.khronos.org/registry/vg/extensions/KHR/EGL_KHR_fence_sync.txt
EGLSyncKHR fence = eglCreateSyncKHR(display, EGL_SYNC_FENCE_KHR, NULL);
if (fence == EGL_NO_SYNC_KHR) {
return;
}
...
然后是属于
这里是Android.mk
LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
#LOCAL_CFLAGS += -DEGL_EGLEXT_PROTOTYPES
LOCAL_CFLAGS = -Wno-psabi
LOCAL_SRC_FILES := app.cpp
#LOCAL_SHARED_LIBRARIES := libcutils libEGL
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE := libapp
LOCAL_LDLIBS := -llog -landroid -lEGL -lGLESv2
include $(BUILD_SHARED_LIBRARY)
请尝试执行中的所有步骤: 从您提供的日志中,构建无法找到EGL库,因此我认为您需要该行
LOCAL_LDLIBS := -llog -landroid -lEGL -lGLESv2
在你的Android.mk中。并确保您的Application.mk包括:
APP_STL := gnustl_static
APP_PLATFORM := android-9
您需要添加:
#define EGL_EGLEXT_PROTOTYPES
在#include
行之前(特别是在includeEGL/eglext.h
之前)
另外(看起来您已经在这样做了),您至少需要根据API 14进行构建,因为这是在公共API中公开此函数的第一个API级别
编辑:或只是取消对Android.mk中的行的注释,该行内容如下:
#LOCAL_CFLAGS += -DEGL_EGLEXT_PROTOTYPES
我认为你应该遵循这些步骤来获得更多的理解 在做球之前,请先做酸的
- 直到jni Folder>的项目路径和直到ndk构建的ndk路径 ex D:\New\u Wok\u 2\Firstndk\jni>c:\android-ndk-r8\ndk build 清理你的项目
#LOCAL_CFLAGS += -DEGL_EGLEXT_PROTOTYPES