简体   繁体   中英

Strange issue after upgrading to iOS 4.1 SDK

I've upgraded the iOS SDK to the newly released 4.1 and now I have the following error while building my app:

/DeveloperBeta/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator4.1.sdk/System/Library/Frameworks/CoreGraphics.framework/Headers/CGPDFContext.h:60:23     

/DeveloperBeta/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator4.1.sdk/System/Library/Frameworks/CoreGraphics.framework/Headers/CGPDFContext.h:60:23: error: expected function body after function declarator

Looking at that line in the .h file I see the following:

CG_EXTERN void CGPDFContextAddDocumentMetadata(CGContextRef context, CFDataRef metadata) CG_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_4_0);

The really interesting thing is the define __MAC_10_7 which appears not to be defined anywhere. I get this error when pre-compiling the .pch file of my app.

What's curious is that a simple hello world app compiles.

Any idea what can I do?

Thanks in advance!

Stelian

This is a known bug with the iOS 4.1 SDK and building using LLVM for the iPhone Simulator. You can read all about it in this thread on Apple's Developer Forums.

The recommended solution is to add the following to Other C Flags in your project's build settings: -D__IPHONE_OS_VERSION_MIN_REQUIRED=040100 where you replace 040100 with your deployment target version (030000 for 3.0, for example).

I have this problem when using the LLVM compiler. Try recompiling using GCC and the problem (for me) goes away.

I'll keep investigating to determine if it is a general toolchain issue or if it's specific to my configuration.

--update:

So it looks like an issue with CLANG. LLVM GCC 4.2 works fine.

I still think it is likely a problem with my configuration. Even an empty project will not compile under LLVM CLANG 1.5 for me.

--update 2:

So it seems that the minimum required version setting is not being honoured in the project info settings. I've manually set it via:

Other C Flags: -D__IPHONE_OS_VERSION_MIN_REQUIRED=031300

(for minimum of iOS 3.1, obviously - if you require a later version then you can use 040100 for version 4.0)

It does seem only to be a simulator problem with CLANG/LLVM. Compiling for the device directly seems to work just fine.

Maybe you should be building with the latest Xcode 4, is this a requirement? The MAC_10_7 would be defined in the system headers shipped with the compiler I'm guessing could be in the SDK but I think not. I'm guessing this is when you build for the simulator.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM