gpt4 book ai didi

android - NDK Unresolved inclusion 但路径在 local_c_includes 中用于旁路库

转载 作者:行者123 更新时间:2023-11-28 07:34:30 26 4
gpt4 key购买 nike

我正在尝试让 Bypass Markdown 解析库与我的 Android 项目一起工作。

我编译并安装了 Boost(因为它是一个依赖项)。然后我下载了 Bypass 源并将 Android 项目作为库导入,并将其作为库包含在我自己的项目属性中。

当我将 NDK 支持添加到项目并重新构建它时,我注意到 Bypass 项目中存在一些错误。我认为这是由 未解析的包含“parser.h” 引起的。

这是我的 Android.makefile:

LOCAL_PATH := $(call my-dir)
BYPASS_SRC := ../../../../src/

include $(CLEAR_VARS)

LOCAL_MODULE := bypass
LOCAL_SRC_FILES := \
bypass.cpp \
$(BYPASS_SRC)parser.cpp \
$(BYPASS_SRC)document.cpp \
$(BYPASS_SRC)element.cpp \
../../../../dep/libsoldout/markdown.c \
../../../../dep/libsoldout/buffer.c \
../../../../dep/libsoldout/array.c

LOCAL_C_INCLUDES:= ../../../dep/libsoldout ../../../src /opt/local/include /usr/local/include $(BYPASS_INCLUDE_PATH)

include $(BUILD_SHARED_LIBRARY)

parser.h 文件位于../../../../src/ 文件夹中。我从 makefile 的开头检查了它,它在那个确切的文件夹中,但找不到。这可能是什么原因造成的?

顺便说一下,这是我第一次使用 NDK,而且我几乎没有 C/C++ 经验,所以如果能提供详细的答案,我们将不胜感激。

最佳答案

在 jni/Android.mk 文件中,我们设置了 LOCAL_PATH 并列出了与 LOCAL_PATH 相关的 LOCAL_SRC_FILES。另一方面,LOCAL_C_INCLUDES 列表包含 C 和 C++ 编译器将搜索的目录,以解析源文件中的#include 指令。这些目录是相对于项目根目录的(通常在 LOCAL_PATH 之上一级)。

在您的情况下,不清楚您是如何检查 ../../../../src 路径到 parser.h 的。这是来自 jni 目录(Android.mk 所在的位置),还是来自项目根目录?

关于您的 Android.mk 文件的更多评论:因为您正在使用交叉编译器,所以您不应该在/opt/local 或/usr/local/include 目录中查找包含文件。NDK 应该提供依赖于平台的替代方案.我找不到定义的 BIPASS_INCLUDE_PATH。

关于android - NDK Unresolved inclusion 但路径在 local_c_includes 中用于旁路库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17011682/

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