2天了,依然无法解决 android编译问题 - multiple definition of 'JNI_OnLoad'

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天了, 依然没有结果。

请问,有人有经验解决吗?

重复定义了。
这个路径可以理解
cocos2dcpp_shared///proj.android/jni/hellocpp/
这个路径不知道是不是你在Android.mk里面配置了,莫名其妙哦。
objs/cocos2dcpp_shared/hellocpp/

你的.cpp路径设置的有问题,编译的时候已经生成了一个main.o,后来又发现一个main.cpp,然后就报错了。不知道你用的什么方法。可以看看这个http://www.cocoachina.com/bbs/read.php?tid=195182&fpage=3

我想问下 你这个问题解决了吗? 如果解决是怎么解决的啊?? 能指点下吗?? 谢谢