1
我有一個大的C/C++庫,它可以在XCode上編譯,但它不能在Eclipse上使用Android NDK進行編譯。 我已經做了很多關於這個錯誤的研究和搜索,現在有兩天了,現有的答案似乎都沒有幫助。NDK文件標記中的Android.mk
當前的錯誤信息是:重複多類
error: undefined reference to ...
此錯誤,即使它們都存在。
在Xcode中,這是一種編譯使用LLVM 6.0只有2編譯標誌的Mac OS平臺:
Apple LLVM 6.0 C Language Dialect: C99[-std=c99]
Apple LLVM 6.0 C++ Standard library: libstdc++ (GNU C++ standard library)
我的Android是目前的設置是這樣的:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := com.LibAndroidBridge
LOCAL_SRC_FILES := Class.cpp
LOCAL_C_INCLUDES += $(LOCAL_PATH)/...several
#LOCAL_ALLOW_UNDEFINED_SYMBOLS := true
LOCAL_CFLAGS += -D__GXX_EXPERIMENTAL_CXX0X__
LOCAL_CFLAGS += -x c++
LOCAL_CFLAGS += -DHAVE_PTHREADS
#LOCAL_CFLAGS += -std=c99
LOCAL_CPPFLAGS += -fexceptions
LOCAL_CPPFLAGS += -std=c++11
#LOCAL_CPPFLAGS += -std=c99
LOCAL_CPP_FEATURES := rtti exceptions
LOCAL_LDLIBS += -llog
LOCAL_LDLIBS += -latomic
include $(BUILD_SHARED_LIBRARY)
而且我Application.mk文件目前的設置是這樣的:
APP_CPPFLAGS+= -std=gnu++0x
#APP_ABI := all
APP_CPPFLAGS += -fexceptions
APP_CPPFLAGS += -frtti
#APP_CFLAGS += -std=c99
NDK_TOOLCHAIN_VERSION:=4.8
APP_STL := gnustl_shared
APP_CPPFLAGS += -std=c++11
任何關於如何使這個大阿莫沒有代碼在Android上編譯?
謝謝!
我指向LOCAL_SRC_FILES中的文件夾,並且我還添加了它們的所有子文件夾。 一些問題(至少可以解決問題並帶來新問題)可以解決的問題是,除了標題外,還包括文件的.cpp版本。 我不確定這是否是一個好主意,因爲這樣做的目的是重用庫,但是因爲這有超過3800個文件,我甚至沒有完全追求這個想法。 任何想法爲什麼它不像XCode那樣編譯? – TooManyEduardos 2015-02-10 21:20:07
如果要使用該庫,則需要爲Android進行編譯,然後在「LOCAL_STATIC_LIBRARIES」中指定它。 – StenSoft 2015-02-10 21:22:40
那麼這就是我想要做的,但它不會編譯 – TooManyEduardos 2015-02-10 21:23:33