Ожидаемое тело функции после объявления функции - PullRequest
0 голосов
/ 09 апреля 2011

Пытаюсь скомпилировать проект unity3d в xcode, но я получаю следующие ошибки компиляции в функции ниже. Кто-нибудь знает, в чем причина?

Использование Xcode 4, SDK 4.3 и Unity 3.3 Базовый SDK установлен на 4.3, версия SDK в Unity установлена ​​на 4.2, а целевая iOS на 3.2

AppController.mm: 710: ошибка: ожидается инициализатор перед '.' лексема

AppController.mm: ошибка: синтаксический анализ. Проблема: ожидаемое тело функции после объявления функции

   void PresentContext_UnityCallback(struct UnityFrameStats const* unityFrameStats)
    {   
    #if ENABLE_INTERNAL_PROFILER
        _unityFrameStats = *unityFrameStats;

        if (_frameId % BLOCK_ON_GPU_EACH_NTH_FRAME == (BLOCK_ON_GPU_EACH_NTH_FRAME-1))
        {
            Prof_Int64 gpuTime0 = mach_absolute_time();

    #if ENABLE_BLOCK_ON_GPU_PROFILER
            UnityFinishRendering();
    #endif

            Prof_Int64 gpuTime1 = mach_absolute_time();
            _gpuDelta = gpuTime1 - gpuTime0;
        }
        else
            _gpuDelta = 0;
    #endif


    #if ENABLE_INTERNAL_PROFILER
        Prof_Int64 swapTime0 = mach_absolute_time();
    #endif

        PresentSurface(_surface);

    #if ENABLE_INTERNAL_PROFILER
        Prof_Int64 vblankTime = mach_absolute_time();

        if (_lastVBlankTime < 0) _lastVBlankTime = vblankTime;
        _frameDelta = vblankTime - _lastVBlankTime; _lastVBlankTime = vblankTime;

        Prof_Int64 swapTime1 = vblankTime;
        _swapDelta = swapTime1 - swapTime0;
    #endif
    }

Код до указанной выше функции следующий:

void PresentSurface(MyEAGLSurface& surface)
{
    UNITY_DBG_LOG ("PresentSurface:\n");
    EAGLContext *oldContext = [EAGLContext currentContext];

    if (oldContext != _context)
        [EAGLContext setCurrentContext:_context];

#if GL_APPLE_framebuffer_multisample
    if (surface.msaaSamples > 0 && _supportsMSAA)
    {
        UnityStartProfilerCounter(msaaResolveCounter);
        #if ENABLE_INTERNAL_PROFILER
        Prof_Int64 msaaTime0 = mach_absolute_time();
        #endif

        UNITY_DBG_LOG ("  ResolveMSAA: samples=%i msaaFBO=%i destFBO=%i\n", surface.msaaSamples, surface.msaaFramebuffer, surface.framebuffer);
        glBindFramebufferOES(GL_READ_FRAMEBUFFER_APPLE, surface.msaaFramebuffer); 
        glBindFramebufferOES(GL_DRAW_FRAMEBUFFER_APPLE, surface.framebuffer);

        glResolveMultisampleFramebufferAPPLE();
        CHECK_GL_ERROR();

        #if ENABLE_INTERNAL_PROFILER
        _msaaResolve += (mach_absolute_time() - msaaTime0);
        #endif
        UnityEndProfilerCounter(msaaResolveCounter);
    }
#endif

#if GL_EXT_discard_framebuffer
    if (_supportsDiscard)
    {
        GLenum attachments[3];
        int discardCount = 0;
        if (surface.msaaSamples > 1 && _supportsMSAA)
            attachments[discardCount++] = GL_COLOR_ATTACHMENT0_OES;

        if (surface.depthFormat)
            attachments[discardCount++] = GL_DEPTH_ATTACHMENT_OES;

        attachments[discardCount++] = GL_STENCIL_ATTACHMENT_OES;

        GLenum target = (surface.msaaSamples > 1 && _supportsMSAA)? GL_READ_FRAMEBUFFER_APPLE: GL_FRAMEBUFFER_OES;
        if (discardCount > 0)
            glDiscardFramebufferEXT(target, discardCount, attachments);
    }
#endif

    CHECK_GL_ERROR();

    // presentRenderbuffer presents currently bound RB, so make sure we have the correct one bound
    glBindRenderbufferOES(GL_RENDERBUFFER_OES, surface.renderbuffer);   
    if(![_context presentRenderbuffer:GL_RENDERBUFFER_OES])
        EAGL_ERROR("swap renderbuffer");

#if GL_APPLE_framebuffer_multisample
    if (_supportsMSAA)
    {
        const int desiredMSAASamples = UnityGetDesiredMSAASampleCount(MSAA_DEFAULT_SAMPLE_COUNT);   
        if (surface.msaaSamples != desiredMSAASamples)
        {
            surface.msaaSamples = desiredMSAASamples;
            CreateSurfaceMultisampleBuffers(&surface);
            glBindRenderbufferOES(GL_RENDERBUFFER_OES, surface.renderbuffer);
        }

        if (surface.msaaSamples > 1)
        {
            glBindFramebufferOES(GL_FRAMEBUFFER_OES, surface.msaaFramebuffer);
            gDefaultFBO = surface.msaaFramebuffer;
            UNITY_DBG_LOG ("  glBindFramebufferOES (GL_FRAMEBUFFER_OES, %i); // PresentSurface\n", surface.msaaFramebuffer);
        }
    }
#endif

    if(oldContext != _context)
        [EAGLContext setCurrentContext:oldContext];
}

Ответы [ 3 ]

0 голосов
/ 28 октября 2011

Я только что удалил &, который был перед переменной ... Теперь я могу бульд

0 голосов
/ 17 мая 2013

Добавьте следующие две строки в мой Prefix.pch

#define __IPHONE_OS_VERSION_MAX_ALLOWED   __IPHONE_4_2
#define __IPHONE_OS_VERSION_MIN_REQUIRED  __IPHONE_3_0
0 голосов
/ 11 апреля 2011

Оке выясняет, что проблема заключается в Unity 3.3. Однако это легко исправить, перейдя в настройки плеера для iOS и перенастроив значение для tagrt SDK с «4.2» до «самое последнее с 4.2»

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...