2014-06-18 104 views
3

我嘗試編譯我的項目與本機C-庫,並得到一個錯誤搖籃建設問題

/Users/eugene/KREF14001/app/src/main/jni/libC/PulseFilter.c: In function 'shapeMonoGame': 
/Users/eugene/KREF14001/app/src/main/jni/libC/PulseFilter.c:696:5: error: 'for' loop initial declarations are only allowed in C99 mode 
/Users/eugene/KREF14001/app/src/main/jni/libC/PulseFilter.c:696:5: note: use option -std=c99 or -std=gnu99 to compile your code 

從這個報告我發現我一定要使用選項-std = C99或-std = gnu99編譯我的代碼,但我不知道該怎麼做。請幫幫我。

+0

歐凱,我發現在Android.mk這個選項,但有一個代碼:LOCAL_PATH:= $(叫我-DIR) 包括$(CLEAR_VARS) LOCAL_MODULE \t \t:= KREF LOCAL_C_INCLUDES \t:= $(LOCAL_PATH)/ H/ LOCAL_SRC_FILES \t \t:=的libC/oouraFFT.c的libC/PulseFilter.c LOCAL_CFLAGS \t \t + = -std = C99 LOCAL_LDLIBS \t \t:= -llog 包括$(BUILD_SHARED_LIBRARY) –

+0

正如你可以看到有已經寫LOCAL_CFLAGS + = -std = c99,但我還有同樣的問題。 –

回答

2

問題在於Gradle不使用您的.mk文件,而是生成自己的文件並使用它們。所以編輯Android.mk和Application.mk很有用。您可以手動構建源代碼或編輯build.gradle的ndk部分。

3

build.gradle文件您的應用程序,你可以在ndk塊位於defaultConfig塊內像這樣添加cFlags "-std=c99"

ndk { 
    moduleName "libblur" 
    abiFilter "armeabi-v7a" 
    stl "gnustl_static" 
    cFlags "-std=c99" 
    ldLibs "log" 
} 
+0

與實驗構建,它不工作。你可以請建議。謝謝 – Vamsi