I’ve been playing around with Cocoa in Real Studio. It’s come a long way in the past couple of releases and I urge you to start testing your apps to find those pesky Cocoa bugs. Real Software is making a huge effort for the 2011 R2 release to fix as many Cocoa bugs as possible. It’s that close.
Yesterday I ran across a problem where my app was crashing immediately upon startup. The crash log gave a very odd error message:
Dyld Error Message: Library not loaded: /System/Library/Frameworks/user32.framework/user32
Wha? User32? That sounds like a Windows library and certainly nothing I’ve ever seen on Mac OS X. I actually wrote the ‘bug’ up and sent it in via Feedback and then did some more research. The answer wasn’t really all that surprising.
I have a lot of old code that I’ve developed, bought, and found over the years that make it into most of my projects. It’s there and I don’t even think about it. One of the pieces of code that I bought from someone works cross-platform Mac/Windows and so it has a ton of #if statements. Things like this:
#if targetcarbon then
//Do Mac stuff
#else
//Do Windows stuff
#endif
See the problem? If I wasn’t making a Carbon application, which Cocoa most definitely is not, it attempts to run the Windows code. So now the crash log makes total sense. I suspect that a lot of people will have a similar problem.
Check your projects for compiler switches like this. If you’re developing cross-platform applications you’ll probably have this problem. In the long run all I did was do a simple global search for #if targetcarbon and replaced it with the target for Mac OS. That won’t work for all cases, but it should get you close.
Ideally I would love for the Real Studio compiler to give me a warning for this case but I don’t think that’s even possible. Really, how many libraries are there in the world to know about for each platform? Impossible I say. At a minimum, however, I would think that it would be possible to get a better runtime error. Sort of like how you get error messages if you don’t have the plugin libraries where the executable expects them (much more of a problem in Windows if you move the Libs directory).
What say you my fellow REALbasic geeks? Have you tried Cocoa yet with 2011 R1.1? Any major problems?
That’s a great tip, Bob. I’m sure that, just as you said, we probably all have some old code lying around with similar issues.
I’ve been testing my products off-and-on with Cocoa support for the last few major releases and have seen quite a lot of improvement. A while back I wrote up a report where apps would crash when running with a subclassed canvas and calling ClearRect (and quite a few other graphics methods). Thankfully, that was fixed very soon.
I made a feature request. Feel free to sign on:
feedback://showreport?report_id=16931