Copying VComponents into Cocoa app

Matthew Jew mjew at icnc.com
Wed Jun 21 19:03:55 CDT 2006


On Jun 20, 2006, at 8:18 PM, Shaun Wexler wrote:

> On Jun 20, 2006, at 4:28 PM, Matthew Jew wrote:
>
>> 0   libvshared_fat_release.dylib   	0x0065ac88 fbl::String::String 
>> [in-charge](char const*, long, char const*, fbl::EStringImpType) + 64
>> 1   libvshared_fat_release.dylib   	0x00641570  
>> fbl::Location_Disk_FSSpec::get_Path() const + 96
>> 2   libvkernel_fat_release.dylib   	0x01030268  
>> fbl::Valentina_Init_ICU() + 52
>> 3   libvkernel_fat_release.dylib   	0x010305f0 fbl::ValentinaInit 
>> (unsigned long, char*, char*) + 68
>>
>> Binary Images Description:
>>     0x1000 -    0x21fff com.yourcompany.RadiusAuthenticator2  
>> RadiusAuthenticator2 version 2.0 (2.0)	/Volumes/Alpha2/Dev- 
>> ProjectBuilder/Cocoa-Projects/RadiusAuthenticator2/build/Release/ 
>> RadiusAuthenticator2.app/Contents/MacOS/RadiusAuthenticator2
>>    0x39000 -    0x3ffff libicuio.dylib 	/usr/local/lib/vcomponents/ 
>> libicuio.dylib
>>   0x205000 -   0x2c5fff libicui18n.dylib 	/usr/local/lib/ 
>> vcomponents/libicui18n.dylib
>>   0x352000 -   0x3e8fff libicuuc.dylib 	/usr/local/lib/vcomponents/ 
>> libicuuc.dylib
>>   0x639000 -   0x6b2fff libvshared_fat_release.dylib 	/usr/local/ 
>> lib/vcomponents/libvshared_fat_release.dylib
>> 0x1008000 -  0x14c3fff libvkernel_fat_release.dylib 	/usr/local/ 
>> lib/vcomponents/libvkernel_fat_release.dylib
>> 0x19ce000 -  0x21f7fff libicudata.dylib 	/usr/local/lib/ 
>> vcomponents/libicudata.dylib
>> 0x21fa000 -  0x2251fff libvclient_fat_release.dylib 	/usr/local/ 
>> lib/vcomponents/libvclient_fat_release.dylib
>> 0x2873000 -  0x2982fff VSDK 	/usr/local/lib/vcomponents/ 
>> VSDK.framework/Versions/A/VSDK
>> 0x2e18000 -  0x2ed8fff libicui18n.dylib 	/Volumes/Alpha2/Dev- 
>> ProjectBuilder/Cocoa-Projects/RadiusAuthenticator2/build/Release/ 
>> RadiusAuthenticator2.app/Contents/VComponents/libicui18n.dylib
>> 0x2f65000 -  0x2f6bfff libicuio.dylib 	/Volumes/Alpha2/Dev- 
>> ProjectBuilder/Cocoa-Projects/RadiusAuthenticator2/build/Release/ 
>> RadiusAuthenticator2.app/Contents/VComponents/libicuio.dylib
>> 0x16617000 - 0x16690fff libvshared_fat_release.dylib 	/Volumes/ 
>> Alpha2/Dev-ProjectBuilder/Cocoa-Projects/RadiusAuthenticator2/ 
>> build/Release/RadiusAuthenticator2.app/Contents/VComponents/ 
>> libvshared_fat_release.dylib
>> 0x16d05000 - 0x171c0fff libvkernel_fat_release.dylib 	/Volumes/ 
>> Alpha2/Dev-ProjectBuilder/Cocoa-Projects/RadiusAuthenticator2/ 
>> build/Release/RadiusAuthenticator2.app/Contents/VComponents/ 
>> libvkernel_fat_release.dylib
>> 0x176cb000 - 0x17ef4fff libicudata.dylib 	/Volumes/Alpha2/Dev- 
>> ProjectBuilder/Cocoa-Projects/RadiusAuthenticator2/build/Release/ 
>> RadiusAuthenticator2.app/Contents/VComponents/libicudata.dylib
>>
>> 0x908dd000 - 0x909dffff libicucore.A.dylib 	/usr/lib/ 
>> libicucore.A.dylib
>>
>> What else should I be doing?
>
> You're doing too much!  Actually, there are 3 sets of ICU libraries  
> linked into your app simultaneously.  See above.  ;)
>
>  1.  /usr/local/lib/vcomponents/*
>  2.  Contents/VComponents/*
>  3.  /usr/lib/libicucore.dylib
>
> Remove ALL library and framework search paths from your target(s),  
> deselect all libraries and frameworks, and only select the embedded  
> copies of the lib's... ie delete the references to /usr/local/lib/ 
> vcomponents, and drag the embedded copies into your project and  
> select them for the target.  Xcode 2.3 improperly leaves multiple  
> library path garbage in target build settings, so you'll have to  
> clean them up yourself.  This is most likely the cause of the  
> problem; one lib is initialized, the other is not, but some things  
> are calling functions in the latter.
>
> Also, the VX project uses the built-in ICU (#3) from Mac OS X.   
> While we were getting VX working, I had Ruslan remove the  
> "icu_3_0::" namespace from Valentina's ICU classes and change it to  
> the default "icu::" which is used by the system's libicucore.  It's  
> possible that you [or paradigma] may have built some recent classes  
> with the icu:: namespace enabled and some of the String handling  
> functions are linking to the wrong ICU lib at runtime.
>
> -- 
> Shaun Wexler
> MacFOH
> http://www.macfoh.com
>
> PS - If you have access to the VX project, you can substitute  
> Valentina.framework (Release/Universal) for ALL of the vcomponents  
> and just copy it right into your Contents/Frameworks/ folder, and  
> add it to your target, for a savings of 35 MB in your app bundle vs  
> vcomponents.  Please note that there are no error message strings  
> yet, and I haven't added VClient to it yet either, but will get  
> that done in the next few days.  Be sure to ask Ruslan if VX is  
> okay to use for your app deployment, because it is a private  
> project of mine and not offered by Paradigma (yet?) until it  
> becomes "VLight".  Also, it doesn't have any v1 classes like the C+ 
> + SDK, only those found in v2.3 or greater, plus no picture format  
> conversions or database upgrades from v1.
>
> Shaun ~
> _______________________________________________

Shaun,

I have removed all other library search paths and framework search  
paths.

I am somewhat puzzled by the instruction to include only the embedded  
copies of the libraries in my project, because I thought the embedded  
copies
were created during the Copy Files phase during a Build.

I can move copies of the libraries into the appropriate place in the  
application's Package Contents, and link to those, but if I do a  
"Clean All",
it will delete those files and I will be left with nothing.

Should I move the files in manually, include them in my project, and  
just never do a "Clean All" ever again?
Or is there some other way that I am missing?

- Matthew




More information about the Valentina mailing list