2011-09-14 37 views
0

我已經編譯我的NDK的C代碼就好了一個Android.mk文件:Android.mk將編譯.c的源代碼,但沒有的.cpp

LOCAL_PATH := $(call my-dir) 
include $(CLEAR_VARS) 
LOCAL_MODULE := galib 
LOCAL_SRC_FILES := galib.c tables-lr35-contam.c tables-lr35-perf.c 
LOCAL_CFLAGS := -DTARGET_ANDROID=1 
LOCAL_LDLIBS := -L$(SYSROOT)/usr/lib -llog 
include $(BUILD_SHARED_LIBRARY) 

我想打電話給第一源galib.cpp而不是.c,因爲這是我在WPF環境中編譯它時需要的名稱。它實際上只是C代碼,但是爲了生成一個DLL,我必須命名它.cpp來正確處理__declspec(dllexport)。

然而,當我將其重命名galib.cpp並更改.mk文件的說法一致,並嘗試建立它的Android,我得到的錯誤:

$ ndk-build 
make: *** No rule to make target `/cygdrive/c/apk/adev/android/etold/jni/galib.c', 
    ...needed by `/cygdrive/c/apk/adev/android/etold/obj/local/armeabi/objs/galib/galib.o'. Stop. 

,就像它仍然要求。 c文件出於某種原因。我還嘗試過「ndk-build -B」,以防萬一從.c版本中遺留下來的東西,但這會導致相同的錯誤。任何想法爲什麼?謝謝!

+0

我認爲這會幫助你:: http://hashspeaks.wordpress.com/2010/01/27/android-mk-documentation/ –

+0

http://developer.android.com/sdk/ndk/overview。 html –

+0

我已經看過這個,它看起來像我所要做的只是重命名爲.cpp和LOCAL_SRC_FILES更改。但是我重讀了它,看到了LOCAL_CPP_EXTENSION,所以我試着明確地說擴展名是.cpp,但沒有幫助。正如示例所示,我嘗試了.cxx,現在我收到了「不受支持的源文件擴展名」錯誤。也許抵抗是徒勞的。 :-) –

回答

4

我知道你問了很久以前。但無論如何 - 對於像我這樣的其他人:

我剛剛解決了這個問題。 由於某些原因,即使在LOCAL_SRC_FILES更改了來源列表時,clean build也不會執行該作業。 我不得不在項目中導航到\obj\local\armeabi\objs\,並手動清理.o文件。

之後,它編譯得很好。