NDK未解析的包含,但路径在local_c_includes中

NDK unresolved inclusion but path is in local_c_includes for Bypass library

本文关键字:local includes 路径 包含 NDK      更新时间:2023-10-16

我想让Bypass Markdown解析库与我的Android项目一起工作。

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

当我在项目中添加NDK支持并重新构建它时,我注意到旁路项目中的一些错误。我认为这是由unresolved inclusion "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。我们设置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定义

相关文章: