我有一个可以在XCode上编译的大型C / C ++库,但它不能使用Android NDK在Eclipse上编译。 我已经做了很多关于这个错误的研究和搜索,现在已经有2天了,而现有的答案似乎都没有帮助。
当前的错误消息是:
error: undefined reference to ...
对于多个类重复此错误,即使它们都存在。
在Xcode中,这是使用LLVM 6.0编译Mac OS平台,只有2个编译器标志:
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上编译大量代码的任何建议吗?
谢谢!
答案 0 :(得分:0)
这取决于未定义引用的确切含义。如果这是您的部分代码,您可能会遗漏LOCAL_SRC_FILES
中的某个文件。如果这是某个库,则需要将其添加到LOCAL_STATIC_LIBRARIES
(但您需要Android版本)。