0

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

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

当我在项目中添加 NDK 支持并重新构建它时,我注意到 Bypass 项目中有一些错误。我认为是由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++ 经验,因此将不胜感激。

4

1 回答 1

1

在 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。

于 2013-06-09T19:50:10.947 回答