函数声明器之后的预期函数体

尝试在xcode中编译unity3d项目,但我得到下面的函数的以下编译错误。 有人知道原因是什么?

使用Xcode 4,SDK 4.3和Unity 3.3 Base SDK设置为4.3,Unity中的SDK版本设置为4.2,目标iOS为3.2

AppController.mm:710:错误:预期的初始化之前'。 代币

AppController.mm:错误:parsing问题:函数声明器之后的预期函数体

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 } 

上述function之前的代码如下:

 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]; } 

Oke发现问题在于Unity 3.3内在的问题。 如何,通过进入iOS的播放器设置,并将tagrt SDK的值从“4.2”重新调整为“自4.2以来的最新版本”

我刚刚删除了那个variables前的那个…现在我可以buld了

添加以下两行到我的Prefix.pch

 #define __IPHONE_OS_VERSION_MAX_ALLOWED __IPHONE_4_2 #define __IPHONE_OS_VERSION_MIN_REQUIRED __IPHONE_3_0