2012-09-14 49 views
-7

我正在做一個augemented的真人計劃。我被交給了這個項目,並且我新到cygwin和android編程。我必須使用cygwin來編譯我的一個cpp文件。然而,當我做了在Cygwin這個錯誤NDK,打造出來:LOCAL_SRC_FILES指向一個丟失的文件

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

我不是在編程親,所以我想一些指導。

+0

- 問題解決 - – CtheW

+0

出於興趣你是怎麼解決你的問題 – alex

+0

我面臨着同樣的問題。請在「答案」部分編寫解決方案並接受它。 – Pallavi

回答

10

曾有同樣的問題,嘗試了多條路徑,但力的工作。最後,通過簡單地複製Development \ Android \ vuforia-sdk-android-2-0-30 \ samples文件夾中的示例項目,然後通過cygwin執行ndk-build來解決該問題。希望幫助:-)

+0

+1。 'samples'文件夾中有'Readme.txt'文件和文本'請通過https://developer.vuforia.com/resources/sample-apps下載示例應用程序並將它們解壓到此文件夾中。 –

+0

該解決方案可能適用於這種情況,但與上述問題甚至沒有密切關係:( – user210504

6

顯然,默認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 

,在另外一組/..需要額外的子文件夾的照顧。這個解決方案爲我工作。

1

我有類似的問題,我把變量NDK_TOOLCHAIN_VERSION作爲R9,而它必須要麼4.8或4.4。我將它改爲4.8並且它工作。

PS:檢查是否缺少的文件確實存在與否會有所幫助。

0

只是促進工作方案的名單,以防萬一上述所有沒有工作。

就我而言,事實證明,在我的路徑中有一個空間。 Cygwin不太喜歡路徑中的空間。刪除我的路徑中的空間解決了問題。

有一個小竅門,你可能希望有像C:\projects\MyNativeProject路徑工作目錄,並在Android SDK和NDK的路徑沒有空格。

0

我想添加我的2c,以防萬一它幫助一些可憐的靈魂。就我而言,ndk不喜歡領先的反斜槓。即從

LOCAL_SRC_FILES := /foo/foo.so 

更改爲

LOCAL_SRC_FILES := foo/foo.so 

解決了我的問題。

0

使用相對路徑目錄在Mac:

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