Re: Static data member behaviour in release builds
Re: Static data member behaviour in release builds
- Subject: Re: Static data member behaviour in release builds
- From: Steve Baxter <email@hidden>
- Date: Tue, 23 Aug 2005 11:40:32 +0100
Hmm, looks like I spoke too soon. Switching the path for my shared
framework to "relative to build product" does fix the problem for
release builds, however this option does not appear to work properly.
In my release build, the path is "/Volumes/Stuff/Users/stevebaxter/
Code/Arcadia XCode/Mac/Build Products/Release/Arcadia.framework"
If I switch to a debug build, the path is still "/Volumes/Stuff/Users/
stevebaxter/Code/Arcadia XCode/Mac/Build Products/Release/
Arcadia.framework"
This does not appear to be a UI bug - the linker is linking the wrong
copy of my framework. If I switch the configuration, quit XCode and
restart
Is this a known bug? This is XCode 2.2 DP1.
Cheers,
Steve.
On 17 Aug 2005, at 11:44, Steve Baxter wrote:
Hi All,
Thanks to all those that replied. The problem was that the plugins
were linking to a different copy of the shared framework which in
turn was in a different location at runtime (they were linking to
the debug version of the framework). This meant that the plugins
were getting a different static to the application and "correct"
shared framework. The solution was to set the path for my
framework to be "relative to build product" so the release version
was correctly linked.
Cheers,
Steve.
On 17 Aug 2005, at 09:24, Jack Nutting wrote:
On 8/16/05, Steve Baxter <email@hidden> wrote:
Hi,
I have a strange problem. I have a class that has a static data
member. This class is implemented in a shared framework and is
linked to by an application and several other plugins
(implemented as
bundles).
In debug mode everything works fine - the app and plugins all share
the same static data member.
In release mode this fails to work properly - it looks like each app
and plugin gets its *own* copy of the static data member. This then
causes our application to fail (the static is actually a pointer
to a
singleton which is initialised by the app and accessed by the app
and
all the plugins).
The only differences I can see between the release and debug
builds are:
- Optimisation on in release mode
- Release strips dead code
- In debug mode the plugins, app and framework are "side by side"
- In release mode the plugins, app and framework are assembled into
the app's bundle
I am a bit stumped by this. So far I have not been able to debug a
release build - if you click build and debug it builds the release
app and then runs the debug version. Anyone got any ideas?
I can only guess why that's happening, perhaps something to do with
how symbols are being exported from the framework. But, I have an
idea for a workaround: make an accessor for this in your
application,
either a function or method of some existing class, so that plugins
can grab the application's "version" of the static data instead of
asking the framework for it directly.
--
// jack
// http://www.nuthole.com
Stephen Baxter
Software Development Manager
Improvision
email@hidden
+44-2476-692229
_______________________________________________
Do not post admin requests to the list. They will be ignored.
Xcode-users mailing list (email@hidden)
Help/Unsubscribe/Update your Subscription:
40improvision.com
This email sent to email@hidden
Stephen Baxter
Software Development Manager
Improvision
email@hidden
+44-2476-692229
_______________________________________________
Do not post admin requests to the list. They will be ignored.
Xcode-users mailing list (email@hidden)
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden