Java 本地\u SRC\u文件指向丢失的文件

Java 本地\u SRC\u文件指向丢失的文件,java,eclipse,cygwin,unix-ar,Java,Eclipse,Cygwin,Unix Ar,我在做一个虚拟现实节目。我被交给这个项目,我是cygwin和android编程的新手。我必须使用cygwin来编译我的一个cpp文件。但是,当我在cygwin上构建ndk时,会出现以下错误: $ ndk-build Android NDK: ERROR:/cygdrive/c/project/jni/Android.mk:QCAR-prebuilt: LOCAL_SRC_FILES points to a missing file Android NDK: Check that /cygd

我在做一个虚拟现实节目。我被交给这个项目,我是cygwin和android编程的新手。我必须使用cygwin来编译我的一个cpp文件。但是,当我在cygwin上构建ndk时,会出现以下错误:

$ ndk-build
Android NDK: ERROR:/cygdrive/c/project/jni/Android.mk:QCAR-prebuilt: LOCAL_SRC_FILES points to a missing file   
Android NDK: Check that /cygdrive/c/project/jni//../../../build/lib/armeabi/libQCAR.so exists  or that its path is correct
/cygdrive/c/android-ndk-r8b/build/core/prebuilt-library.mk:43: *** Android NDK: Aborting    .  Stop.
这是我的android.mk代码:

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)
LOCAL_MODULE := QCAR-prebuilt
LOCAL_SRC_FILES = /../../../build/lib/$(TARGET_ARCH_ABI)/libQCAR.so
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/../../../build/include
include $(PREBUILT_SHARED_LIBRARY)
include $(CLEAR_VARS)

LOCAL_MODULE := ImageTargets
# The TARGET_PLATFORM defines the targetted Android Platform API level
TARGET_PLATFORM := android-5
# This variable determines the OpenGL ES API version to use:
# If set to true, OpenGL ES 1.1 is used, otherwise OpenGL ES 2.0.
USE_OPENGL_ES_1_1 := false
# Set OpenGL ES version-specific settings.
ifeq ($(USE_OPENGL_ES_1_1), true)
    OPENGLES_LIB  := -lGLESv1_CM
    OPENGLES_DEF  := -DUSE_OPENGL_ES_1_1
else
    OPENGLES_LIB  := -lGLESv2
    OPENGLES_DEF  := -DUSE_OPENGL_ES_2_0
endif

LOCAL_CFLAGS := -Wno-write-strings $(OPENGLES_DEF)

LOCAL_LDLIBS := \
    -llog $(OPENGLES_LIB)



LOCAL_SHARED_LIBRARIES := QCAR-prebuilt

LOCAL_SRC_FILES := ImageTargets.cpp SampleUtils.cpp Texture.cpp

LOCAL_ARM_MODE := arm

include $(BUILD_SHARED_LIBRARY)**

我不擅长编程,所以我需要一些指导。

也有同样的问题,尝试了多种途径,但效果不佳。通过简单地复制Development\Android\vuforia-sdk-Android-2-0-30\samples文件夹中的样例项目,然后通过cygwin执行ndk构建,最终解决了这个问题。希望有帮助:-

显然,default Android.mk假定ImageTargets文件夹位于../vuforia-sdk-Android-x-x-xx/samples/ImageTargets-x-x-x,但在我下载样本并将其解压缩到samples目录之后,位置如下:../vuforia-sdk-android-x-x/samples/vuforia-sampleapps-android-x-x-xx/ImageTargets-x-x-x。因此,原来还有一个子目录,这就是构建失败的原因。为了让它发挥作用,我对Android.mk进行了如下编辑:

LOCAL_SRC_FILES = /../../../build/lib/$(TARGET_ARCH_ABI)/libQCAR.so
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/../../../build/include
应改为

LOCAL_SRC_FILES = /../../../../build/lib/$(TARGET_ARCH_ABI)/libQCAR.so
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/../../../../build/include 

,其中附加的/。。处理附加的子文件夹。这个解决方案对我很有效。

步骤1:将示例复制到C:\Development\Android\vuforia-sdk-Android-2-0-31\samples

步骤2:打开命令提示符

写入命令1:cd C:\Development\Android\vuforia-sdk-Android-2-0-31\samples\ImageTargets-2-0-7

写入命令2:ndk构建

步骤3:将项目导入Eclipse

步骤4:


因此,成功构建。不要忘记在环境变量中设置ndk的路径。

我遇到了类似的问题,我将变量ndk_TOOLCHAIN_版本设置为r9,而它必须是4.8或4.4。我把它改成了4.8,它成功了


PS:检查丢失的文件是否真的存在会有所帮助。

仅为工作解决方案列表提供帮助,以防上述所有操作都不起作用

在我的情况下,结果是在我的路径上有一个空间。Cygwin不太喜欢路径中的空格。删除路径中的空格修复了此问题


作为提示,您可能希望您的工作目录位于C:\projects\MyNativeProject这样的路径中,而Android SDK和NDK位于没有空格的路径上

我想加上我的2c,以防万一它能帮助一些可怜的灵魂。在我的例子中,ndk不喜欢前面的反斜杠。i、 e.从

LOCAL_SRC_FILES := /foo/foo.so


解决了我的问题

在Mac上使用相对目录路径:

-LOCAL_SRC_FILES := $(LOCAL_PATH)/lib/$(ARCH_PATH)/lib.so
+LOCAL_SRC_FILES := ./lib/$(ARCH_PATH)/lib.so

出于兴趣,你是如何解决你的问题的?我面临着同样的问题。请将解决方案写在答案部分并接受。嗨,C你能告诉我们你是如何解决问题的吗?请将你解决问题的方法+1贴在帖子上。在示例文件夹中有Readme.txt文件和文本,请下载示例应用程序,网址为https://developer.vuforia.com/resources/sample-apps 并将其解压缩到此文件夹中。解决方案可能适用于此情况,但与上述问题没有密切关系:
-LOCAL_SRC_FILES := $(LOCAL_PATH)/lib/$(ARCH_PATH)/lib.so
+LOCAL_SRC_FILES := ./lib/$(ARCH_PATH)/lib.so