LOCAL_SRC_FILES указывает на отсутствующий файл

Я делаю программу дополненной реальности. Мне передали этот проект, и я новичок в программировании Cygwin и Android. я должен использовать cygwin для компиляции одного из моих файлов cpp. однако, когда я делаю ndk-build на cygwin, появляется эта ошибка:

$ 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)**

Я не профессионал в программировании, поэтому я хотел бы получить некоторые рекомендации.


person CtheW    schedule 14.09.2012    source источник
comment
из интереса как ты решил свою проблему   -  person alex    schedule 01.10.2012
comment
Я столкнулся с той же проблемой. Пожалуйста, напишите решение в разделе «Ответы» и примите его.   -  person Pallavi    schedule 21.11.2012
comment
Привет CtheW Не могли бы вы рассказать нам, как вы решили свою проблему?   -  person Arun Badole    schedule 21.12.2012
comment
Напишите пожалуйста как вы решили проблему   -  person Prabhu M    schedule 09.02.2013


Ответы (7)


Была такая же проблема, пробовал несколько путей, но не работает. Наконец решил эту проблему, просто скопировав образец проекта в папку Development\Android\vuforia-sdk-android-2-0-30\samples, а затем выполнив ndk-build через cygwin. Надеюсь, это поможет :-)

person user1922155    schedule 21.12.2012
comment
+1. В папке samples находится Readme.txt файл с текстом Please download the sample apps at https://developer.vuforia.com/resources/sample-apps and unpack them in this folder. - person ashakirov; 10.11.2013
comment
Решение, возможно, сработало для этого случая, но даже не было тесно связано с проблемой, описанной выше :( - person user210504; 27.09.2014

По-видимому, по умолчанию Android.mk предполагает, что папка ImageTargets находится по адресу ../vuforia-sdk-android-x-x-xx/samples/ImageTargets-x-x-x, но после того, как я загрузил образцы и распаковал их в каталог с образцами, расположение было следующим: ../vuforia-sdk-android-x-x-xx/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 

, где дополнительный набор /.. отвечает за эту дополнительную подпапку. Это решение сработало для меня.

person Egor    schedule 30.03.2013

шаг 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-build

шаг 3: импортировать проект в eclipses

шаг 4: https://developer.vuforia.com/resources/dev-guide/step-3-compiling-running-vuforia-sample-app

так что стройте успешно. Не забудьте указать путь к ndk в переменных среды.

person kalpana c    schedule 06.11.2013

У меня была аналогичная проблема, я поставил переменную NDK_TOOLCHAIN_VERSION как r9, а должно было быть либо 4.8, либо 4.4. Поменял на 4.8 и все заработало.

PS: Проверка, действительно ли отсутствующий файл существует или нет, поможет.

person noob    schedule 25.12.2013

Просто внесите свой вклад в список рабочих решений, на случай, если все вышеперечисленное не сработает.

В моем случае оказалось, что в моем пути есть пробел. Cygwin очень не любит пробелы в путях. Удаление пробелов в моем пути решило проблему.

В качестве подсказки вы можете захотеть, чтобы ваш рабочий каталог находился по пути, например C:\projects\MyNativeProject, а ваш Android SDK и NDK — по путям без пробелов.

person Shailen    schedule 27.01.2016

Я хотел бы добавить свой 2c, на случай, если это поможет какой-нибудь бедняге. В моем случае ndk не понравилась ведущая обратная косая черта. то есть переход от

LOCAL_SRC_FILES := /foo/foo.so

to

LOCAL_SRC_FILES := foo/foo.so

решил мою проблему.

person pandamakes    schedule 11.05.2016

использовать относительный путь к каталогу работает на Mac:

-LOCAL_SRC_FILES := $(LOCAL_PATH)/lib/$(ARCH_PATH)/lib.so
+LOCAL_SRC_FILES := ./lib/$(ARCH_PATH)/lib.so
person Ray Lee    schedule 07.11.2016