【问题标题】:Android NDK: Missing LOCAL_MODULE before including BUILD_SHARED_LIBRARYAndroid NDK:在包含 BUILD_SHARED_LIBRARY 之前缺少 LOCAL_MODULE
【发布时间】:2015-07-31 13:21:01
【问题描述】:

我正在尝试在this tutorial 之后在 Eclipse/ADT 中设置一个测试 NDK 项目。

我创建了一个全新的 Android 项目“Test1”,其中添加了以下 2 个文件:

c:\Workspace\Test1\jni\Android.mk
c:\Workspace\Test1\jni\ndkfoo.c

这是Android.mk:

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE    := ndkfoo
LOCAL_SRC_FILES := ndkfoo.c
include $(BUILD_SHARED_LIBRARY)

但是当我尝试编译它时,我得到了这个错误:

c:\Workspace\Test1\jni>ndk-build
c:/android-ndk-r10d/build/core/build-shared-library.mk:23: *** Android NDK:在 c:/Workspace/Test1//jni/Android.mk 中包含 BUILD_SHARED_LIBRARY 之前缺少 LOCAL_MODULE。停止。

但我在Android.mk 中有一个LOCAL_MODULE    := ndkfoo 子句,所以我不明白为什么会出现这个错误!

【问题讨论】:

    标签: android c++ eclipse android-ndk


    【解决方案1】:

    发布此内容以防其他可怜的灵魂试图直接从该教程中复制/粘贴 - LOCAL_MODULE := ndkfoo 行上的空格有问题。

    我认为它们不是正确的空格,而是一些奇怪的 Unicode 字符,它与 ndk-build 混淆了,因为我用十六进制编辑器查看了它们,它们是 0xC2 0xA0 0xC2 0xA0 0xC2 0xA0 而不是 0x20 0x20 0x20 0x20(这是正常的空格)。

    很遗憾,任何从他们的教程中复制的人都会遇到此错误。

    如果您尝试从这里的问题中复制它应该没问题,我认为 SO 以某种方式将它们修复为正常空间,但在原始站点上它们是奇怪的 Unicode 空间,会导致 ndk-build 失败。

    编辑:显然那些是non-breaking spaces。我不知道这是不是真的,但我认为 ndk-build 没有将它们识别为空格,所以它们成为变量名的一部分,所以我定义了一个名为 "LOCAL_MODULE " 的变量,而不是 "LOCAL_MODULE",这就是为什么它抱怨变量未定义的原因。

    【讨论】:

    • 是的,类似的问题,但对我来说是行尾。建议使用一个文本编辑器来为您转换这些内容(Windows 下的 Notepad++ 有一个选项),或者确保使用空格键手动删除和替换每个空格,并使用 enter 结束每一行。
    猜你喜欢
    • 2016-01-19
    • 1970-01-01
    • 1970-01-01
    • 2018-05-11
    • 2016-07-01
    • 2020-09-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多