甄齐才 2014-05-28 12:52 采纳率: 0%
浏览 4606

cocos2d-x移植Android平台 Jni/hellocpp/main.cpp报错

#include "AppDelegate.h"
#include "cocos2d.h"
#include "CCEventType.h"
#include "platform/android/jni/JniHelper.h"
#include
#include

#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
{
    ccDrawInit();
    ccGLInvalidateStateCache();

    CCShaderCache::sharedShaderCache()->reloadDefaultShaders();
    CCTextureCache::reloadAllTextures();
    CCNotificationCenter::sharedNotificationCenter()->postNotification(EVNET_COME_TO_FOREGROUND, NULL);
    CCDirector::sharedDirector()->setGLDefaultValues(); 
}
 */

}

}

错误信息:E:/android-ndk-r8e-windows-x86_64/android-ndk-r8e/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/__/__/Classes/Scene/Menu.o: in function Menu::update(float):jni/../../Classes/Scene/Menu.cpp:119: error: undefined reference to 'AboutScene::scene()'
collect2: ld returned 1 exit status
make: *** [obj/local/armeabi/libcocos2dcpp.so] Error 1

  • 写回答

1条回答 默认 最新

  • 你知我知皆知 2024-08-02 03:53
    关注

    以下回答参考 皆我百晓生券券喵儿 等免费微信小程序相关内容作答,并由本人整理回复。

    在你的项目中,你可能遇到了一个名为ccDrawInit()的函数调用错误。这个错误表明,当尝试初始化OpenGL视图时,没有找到相应的OpenGL视图。

    为了解决这个问题,你需要确保CCDirector::sharedDirector()->getOpenGLView()方法正确地获取了OpenGL视图。以下是一个示例:

    首先,在你的AppDelegate.h文件中添加以下头文件:

    #include <CCDirector>
    

    然后,在AppDelegate.mm文件中实现CCDirector::sharedDirector()->getOpenGLView()方法:

    - (CCSprite*)sharedDirector()->getOpenGLView()
    {
        return sharedOpenGLView;
    }
    

    现在,你应该能够在JNI_OnLoad()nativeInit()函数中看到OpenGL视图的正确引用。如果仍然遇到问题,请检查你的AppDelegate.mm文件中的其他相关代码,并确保CCDirector::sharedDirector()->getOpenGLView()方法是正确的。

    评论

报告相同问题?