在包含 BUILD_SHARED_LIBRARY 之前缺少 LOCAL_MODULE
Posted
技术标签:
【中文标题】在包含 BUILD_SHARED_LIBRARY 之前缺少 LOCAL_MODULE【英文标题】:Missing LOCAL_MODULE before including BUILD_SHARED_LIBRARY 【发布时间】:2016-01-19 04:50:39 【问题描述】:我正在尝试在 Eclipse 中设置一个 NDK 项目。我已经构建了 NDK,因为我的示例程序工作正常。但是,现在当我运行我的代码时,我遇到了这个错误
*** android NDK:在 jni/Android.mk 中包含 BUILD_SHARED_LIBRARY 之前缺少 LOCAL_MODULE。停下来。
我已经尝试通过这个问题来解决它 Android NDK: Missing LOCAL_MODULE before including BUILD_SHARED_LIBRARY
但是,它不起作用。请帮我。 以下是我的 Android.mk 文件
LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
OPENCV_CAMERA_MODULES:= off
OPENCV_MK_PATH:D:\FYP\darwinwallet-master\OpenCV-2.4.9-android-sdk\sdk\native\jni\OpenCV.mk
OPENCV_LIB_TYPE:=STATIC
OPENCV_INSTALL_MODULES:=on
include $(OPENCV_MK_PATH)
LOCAL_C_INCLUDES:=D:\FYP\darwinwallet-master\OpenCV-2.4.9-android-sdk\sdk\native\jni\include\
LOCAL_MODULE:=native_wallet
LOCAL_SRC_FILES:=jni_recognizer.cpp NativeVision/vision.cpp
LOCAL_CFLAGS=-ffast-math -O3 -funroll-loopsLOCAL_LDLIBS+=-llog -ldl
include $(BUILD_SHARED_LIBRARY)
以下是我的 build-shared-library.mk
LOCAL_BUILD_SCRIPT := BUILD_SHARED_LIBRARY
LOCAL_MAKEFILE := $(local-makefile)
$(call check-defined-LOCAL_MODULE,$(LOCAL_BUILD_SCRIPT))
$(call check-LOCAL_MODULE,$(LOCAL_MAKEFILE))
$(call check-LOCAL_MODULE_FILENAME)
my := TARGET_
$(call handle-module-filename,lib,$(TARGET_SONAME_EXTENSION))
$(call handle-module-built)
LOCAL_MODULE_CLASS := SHARED_LIBRARY
include $(BUILD_SYSTEM)/build-module.mk
【问题讨论】:
build-shared-library.mk 不是你的;它是 NDK 的一部分,您不要过多地摆弄它。您可以将其从您的问题中删除。 【参考方案1】:不要在你的 make 文件中使用反斜杠,这太危险了。即使在 Windows 上,您也可以使用正斜杠,即将所有 \
更改为 /
。这将立即解决您的问题。
具体来说,您定义LOCAL_C_INCLUDES
的行以\
结尾,这意味着对于make 而言它不会结束。 make 尽职尽责地加入下一行,所以它实际看到的是类似
…
LOCAL_C_INCLUDES:=D:\…\include\LOCAL_MODULE:=native_wallet
LOCAL_SRC_FILES:=jni_recognizer.cpp NativeVision/vision.cpp
…
但实际上,没有必要在你include OpenCV.mk
之后重新定义LOCAL_C_INCLUDES
。该脚本负责为您设置包含路径、标志和库依赖项。
【讨论】:
以上是关于在包含 BUILD_SHARED_LIBRARY 之前缺少 LOCAL_MODULE的主要内容,如果未能解决你的问题,请参考以下文章
我想将包含文件嵌套在包含文件中。为啥我不能在 Inno Setup 中这样做?