NDK链接静态文件产生的问题
我写了个mk文件,里面要链接3个静态文件,但总是报undefine的错误,报错的函数就是静态库里面的函数,那么就表示我链接不成功了。求高手帮我解答一下!mk文件如下:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := LIB2
LOCAL_SRC_FILES := libMyGUIEngine.a
include $(PREBUILT_STATIC_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := LIB3
LOCAL_SRC_FILES := libCommon.a
include $(PREBUILT_STATIC_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := LIB4
LOCAL_SRC_FILES := libMyGUI_OpenGLESPlatformAndoird.a
include $(PREBUILT_STATIC_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := game_logic_static
LOCAL_MODULE_FILENAME := libgame_logic
LOCAL_LDLIBS := -llog
LOCAL_C_INCLUDES := E:/MyGUI/MyGUI_3.2.0/MyGUIEngine/include
LOCAL_SRC_FILES := AppDelegate.cpp \
HelloWorldScene.cpp \
BaseManager.cpp \
LOCAL_STATIC_LIBRARIES := LIB2 LIB3 LIB4
#LOCAL_STATIC_LIBRARIES += png_static_prebuilt
#LOCAL_STATIC_LIBRARIES += xml2_static_prebuilt
#LOCAL_STATIC_LIBRARIES += jpeg_static_prebuilt
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)
LOCAL_WHOLE_STATIC_LIBRARIES += cocos2dx_static
LOCAL_SHARED_LIBRARIES := cocosdenshion_shared
LOCAL_CPPFLAGS += -fexceptions
include $(BUILD_STATIC_LIBRARY)
$(call import-module,cocos2dx/platform/third_party/android/modules/libpng)
$(call import-module,cocos2dx/platform/third_party/android/modules/libxml2)
$(call import-module,cocos2dx/platform/third_party/android/modules/libjpeg)
部分报错如下:
./obj/local/armeabi/libgame_logic.a(HelloWorldScene.o): In function `HelloWorld::init()':
E:\sdstar\cocos2d-1.0.1-x-0.12.0\testMyGUI_android\android/jni/../../Classes/HelloWorldScene.cpp:95: undefined reference to `MyGUI::LayoutManager::loadLayout(std::string const&, std::string const&, MyGUI::Widget*)'
./obj/local/armeabi/libgame_logic.a(HelloWorldScene.o): In function `HelloWorld::draw()':
E:\sdstar\cocos2d-1.0.1-x-0.12.0\testMyGUI_android\android/jni/../../Classes/HelloWorldScene.cpp:118: undefined reference to `YingZheng::COpenGLESPlatform::getRenderManager()'
E:\sdstar\cocos2d-1.0.1-x-0.12.0\testMyGUI_android\android/jni/../../Classes/HelloWorldScene.cpp:118: undefined reference to `YingZheng::COpenGLESRenderManager::drawOneFrame()'
./obj/local/armeabi/libgame_logic.a(HelloWorldScene.o): In function `MyGUI::Singleton<MyGUI::LayoutManager>::getInstance()':
E:/MyGUI/MyGUI_3.2.0/MyGUIEngine/include/MyGUI_Singleton.h:55: undefined reference to `MyGUI::LogManager::getInstance()'
E:/MyGUI/MyGUI_3.2.0/MyGUIEngine/include/MyGUI_Singleton.h:55: undefined reference to `MyGUI::LogManager::log(std::string const&, MyGUI::LogLevel, std::string const&, char const*, int)'
E:/MyGUI/MyGUI_3.2.0/MyGUIEngine/include/MyGUI_Singleton.h:55: undefined reference to `MyGUI::Exception::Exception(std::string const&, std::string const&, char const*, long)'
E:/MyGUI/MyGUI_3.2.0/MyGUIEngine/include/MyGUI_Singleton.h:57: undefined reference to `typeinfo for MyGUI::Exception'
E:/MyGUI/MyGUI_3.2.0/MyGUIEngine/include/MyGUI_Singleton.h:57: undefined reference to `MyGUI::Exception::~Exception()'
./obj/local/armeabi/libgame_logic.a(HelloWorldScene.o): In function `MyGUI::Singleton<MyGUI::LayoutManager>::getInstancePtr()':
E:/MyGUI/MyGUI_3.2.0/MyGUIEngine/include/MyGUI_Singleton.h:62: undefined reference to `MyGUI::Singleton<MyGUI::LayoutManager>::msInstance'
./obj/local/armeabi/libgame_logic.a(HelloWorldScene.o): In function `MyGUI::Singleton<MyGUI::LayoutManager>::getClassTypeName()':
E:/MyGUI/MyGUI_3.2.0/MyGUIEngine/include/MyGUI_Singleton.h:67: undefined reference to `MyGUI::Singleton<MyGUI::LayoutManager>::mClassTypeName'
./obj/local/armeabi/libgame_logic.a(BaseManager.o): In function `CBaseManager::MyGUIInit()':
E:\sdstar\cocos2d-1.0.1-x-0.12.0\testMyGUI_android\android/jni/../../Classes/BaseManager.cpp:23: undefined reference to `YingZheng::COpenGLESPlatform::COpenGLESPlatform()'
E:\sdstar\cocos2d-1.0.1-x-0.12.0\testMyGUI_android\android/jni/../../Classes/BaseManager.cpp:24: undefined reference to `YingZheng::COpenGLESPlatform::initialize(YingZheng::COpenGLESImageLoader*)'
E:\sdstar\cocos2d-1.0.1-x-0.12.0\testMyGUI_android\android/jni/../../Classes/BaseManager.cpp:26: undefined reference to `YingZheng::COpenGLESPlatform::getRenderManager()'
E:\sdstar\cocos2d-1.0.1-x-0.12.0\testMyGUI_android\android/jni/../../Classes/BaseManager.cpp:26: undefined reference to `YingZheng::COpenGLESRenderManager::setViewSize(int, int)'
E:\sdstar\cocos2d-1.0.1-x-0.12.0\testMyGUI_android\android/jni/../../Classes/BaseManager.cpp:27: undefined reference to `MyGUI::Gui::Gui()'
E:\sdstar\cocos2d-1.0.1-x-0.12.0\testMyGUI_android\android/jni/../../Classes/BaseManager.cpp:28: undefined reference to `MyGUI::Gui::initialise(std::string const&)'
./obj/local/armeabi/libgame_logic.a(BaseManager.o): In function `CBaseManager::setupResources()':
E:\sdstar\cocos2d-1.0.1-x-0.12.0\testMyGUI_android\android/jni/../../Classes/BaseManager.cpp:33: undefined reference to `MyGUI::xml::Document::Document()'
E:\sdstar\cocos2d-1.0.1-x-0.12.0\testMyGUI_android\android/jni/../../Classes/BaseManager.cpp:35: undefined reference to `MyGUI::xml::Document::open(std::string const&)'
E:\sdstar\cocos2d-1.0.1-x-0.12.0\testMyGUI_android\android/jni/../../Classes/BaseManager.cpp:36: undefined reference to `MyGUI::xml::Document::getLastError()'
E:\sdstar\cocos2d-1.0.1-x-0.12.0\testMyGUI_android\android/jni/../../Classes/BaseManager.cpp:38: undefined reference to `MyGUI::xml::Document::getRoot() const'
E:\sdstar\cocos2d-1.0.1-x-0.12.0\testMyGUI_android\android/jni/../../Classes/BaseManager.cpp:39: undefined reference to `MyGUI::xml::Element::getName() const'
E:\sdstar\cocos2d-1.0.1-x-0.12.0\testMyGUI_android\android/jni/../../Classes/BaseManager.cpp:41: undefined reference to `MyGUI::xml::Element::getElementEnumerator()'
E:\sdstar\cocos2d-1.0.1-x-0.12.0\testMyGUI_android\android/jni/../../Classes/BaseManager.cpp:43: undefined reference to `MyGUI::xml::ElementEnumerator::operator->() const'
E:\sdstar\cocos2d-1.0.1-x-0.12.0\testMyGUI_android\android/jni/../../Classes/BaseManager.cpp:43: undefined reference to `MyGUI::xml::Element::getName() const'
E:\sdstar\cocos2d-1.0.1-x-0.12.0\testMyGUI_android\android/jni/../../Classes/BaseManager.cpp:46: undefined reference to `MyGUI::xml::ElementEnumerator::operator->() const'
E:\sdstar\cocos2d-1.0.1-x-0.12.0\testMyGUI_android\android/jni/../../Classes/BaseManager.cpp:46: undefined reference to `MyGUI::xml::Element::findAttribute(std::string const&)'
E:\sdstar\cocos2d-1.0.1-x-0.12.0\testMyGUI_android\android/jni/../../Classes/BaseManager.cpp:48: undefined reference to `MyGUI::xml::ElementEnumerator::operator->() const'
E:\sdstar\cocos2d-1.0.1-x-0.12.0\testMyGUI_android\android/jni/../../Classes/BaseManager.cpp:48: undefined reference to `MyGUI::xml::Element::findAttribute(std::string const&)'
E:\sdstar\cocos2d-1.0.1-x-0.12.0\testMyGUI_android\android/jni/../../Classes/BaseManager.cpp:50: undefined reference to `MyGUI::xml::ElementEnumerator::operator->() const'
E:\sdstar\cocos2d-1.0.1-x-0.12.0\testMyGUI_android\android/jni/../../Classes/BaseManager.cpp:50: undefined reference to `MyGUI::xml::Element::getContent() const'
E:\sdstar\cocos2d-1.0.1-x-0.12.0\testMyGUI_android\android/jni/../../Classes/BaseManager.cpp:52: undefined reference to `MyGUI::xml::ElementEnumerator::operator->() const'
E:\sdstar\cocos2d-1.0.1-x-0.12.0\testMyGUI_android\android/jni/../../Classes/BaseManager.cpp:52: undefined reference to `MyGUI::xml::Element::getContent() const'
E:\sdstar\cocos2d-1.0.1-x-0.12.0\testMyGUI_android\android/jni/../../Classes/BaseManager.cpp:42: undefined reference to `MyGUI::xml::ElementEnumerator::next()'
E:\sdstar\cocos2d-1.0.1-x-0.12.0\testMyGUI_android\android/jni/../../Classes/BaseManager.cpp:56: undefined reference to `MyGUI::xml::Document::~Document()'
E:\sdstar\cocos2d-1.0.1-x-0.12.0\testMyGUI_android\android/jni/../../Classes/BaseManager.cpp:56: undefined reference to `MyGUI::xml::Document::~Document()'
./obj/local/armeabi/libgame_logic.a(BaseManager.o): In function `CBaseManager::addResourceLocation(std::string const&, bool)':
E:\sdstar\cocos2d-1.0.1-x-0.12.0\testMyGUI_android\android/jni/../../Classes/BaseManager.cpp:61: undefined reference to `YingZheng::COpenGLESPlatform::getDataManager()'
E:\sdstar\cocos2d-1.0.1-x-0.12.0\testMyGUI_android\android/jni/../../Classes/BaseManager.cpp:61: undefined reference to `YingZheng::COpenGLESDataManager::addResourceLocation(std::string const&, bool)'
collect2: ld returned 1 exit status
/cygdrive/e/sdstar/android-ndk-r8-windows/android-ndk-r8/build/core/build-binary.mk:369: recipe for target `obj/local/armeabi/libgame.so' failed
make: *** [obj/local/armeabi/libgame.so] Error 1