gpt4 book ai didi

android - 使用 NDK 编译会出现成功包含头文件的错误

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:54:51 26 4
gpt4 key购买 nike

我的应用程序.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 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;
}
...

当我运行 ndk-build 时,它找不到 egl.h 中存在的方法并且没有创建 .so。这是日志:

app.cpp:31:72: error: 'eglCreateSyncKHR' was not declared in this scope 

后跟属于

的所有KHR方法

这是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)

最佳答案

你需要添加:

#define EGL_EGLEXT_PROTOTYPES

在您的 #include 行之前(好吧,特别是在包括 EGL/eglext.h 之前)。

此外(看起来您已经在这样做了),您至少需要针对 API 14 进行构建,因为这是在公共(public) API 中公开此功能的第一个 API 级别。

编辑:或者只是取消注释 Android.mk 中的行:

#LOCAL_CFLAGS += -DEGL_EGLEXT_PROTOTYPES

关于android - 使用 NDK 编译会出现成功包含头文件的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12091607/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com