cocos2d-x 2.2.3
windows下编译没有问题,也可以运行。
整个项目, 目录结构非default, 自己设置了目录结构, 对应的,改了 build_native.sh 和 jni/Android.MK
在andorid编译,出现下列问题
— Begin quote from ____
SharedLibrary : libcocos2dcpp.so
D:/Code/Tools/Mobile/android-ndk-r9d/toolchains/arm-linux-androideabi-4.6/prebuilt/windows-x86_64/bin/…/lib/gcc/arm-linux-androideabi/4.6/…/…/…/…/arm-linux-androideabi/bin/ld.exe: error: ./obj/local/armeabi/objs/cocos2dcpp_shared///proj.android/jni/hellocpp/main.o: multiple definition of ‘JNI_OnLoad’
D:/Code/Tools/Mobile/android-ndk-r9d/toolchains/arm-linux-androideabi-4.6/prebuilt/windows-x86_64/bin/…/lib/gcc/arm-linux-androideabi/4.6/…/…/…/…/arm-linux-androideabi/bin/ld.exe: ./obj/local/armeabi/objs/cocos2dcpp_shared/hellocpp/main.o: previous definition here
D:/Code/Tools/Mobile/android-ndk-r9d/toolchains/arm-linux-androideabi-4.6/prebuilt/windows-x86_64/bin/…/lib/gcc/arm-linux-androideabi/4.6/…/…/…/…/arm-linux-androideabi/bin/ld.exe: error: ./obj/local/armeabi/objs/cocos2dcpp_shared///proj.android/jni/hellocpp/main.o: multiple definition of ‘Java_org_cocos2dx_lib_Cocos2dxRenderer_nativeInit’
/cygdrive/d/Code/Tools/Mobile/android-ndk-r9d/build/core/build-binary.mk:588: recipe for target ‘obj/local/armeabi/libcocos2dcpp.so’ failed
D:/Code/Tools/Mobile/android-ndk-r9d/toolchains/arm-linux-androideabi-4.6/prebuilt/windows-x86_64/bin/…/lib/gcc/arm-linux-androideabi/4.6/…/…/…/…/arm-linux-androideabi/bin/ld.exe: ./obj/local/armeabi/objs/cocos2dcpp_shared/hellocpp/main.o: previous definition here
make: Leaving directory ‘/cygdrive/d/Code/Mobile/MyProject/SlotGames/SlotGamesSource/proj.android’
collect2: ld returned 1 exit status
— End quote
main.cpp是官方default的
#include "AppDelegate.h"#include "cocos2d.h"#include "CCEventType.h"#include "platform/android/jni/JniHelper.h"#include <jni.h>#include <android/log.h>
#define LOG_TAG "main"#define LOGD(...) __android_log_print(ANDROID_LOG_DEBUG,LOG_TAG,__VA_ARGS__)
using namespace cocos2d;
extern "C"{ jint JNI_OnLoad(JavaVM *vm, void *reserved){ JniHelper::setJavaVM(vm);
return JNI_VERSION_1_4;}
void Java_org_cocos2dx_lib_Cocos2dxRenderer_nativeInit(JNIEnv* env, jobject thiz, jint w, jint h){ if (!CCDirector::sharedDirector()->getOpenGLView()) { CCEGLView *view = CCEGLView::sharedOpenGLView(); view->setFrameSize(w, h);
AppDelegate *pAppDelegate = new AppDelegate(); CCApplication::sharedApplication()->run(); } else { ccGLInvalidateStateCache(); CCShaderCache::sharedShaderCache()->reloadDefaultShaders(); ccDrawInit(); CCTextureCache::reloadAllTextures(); CCNotificationCenter::sharedNotificationCenter()->postNotification(EVENT_COME_TO_FOREGROUND, NULL); CCDirector::sharedDirector()->setGLDefaultValues(); }}
}
已经2天了, 依然没有结果。
请问,有人有经验解决吗?