You are viewing a plain text version of this content. The canonical link for it is here.
Posted to c-users@xerces.apache.org by Frank Kaaijk <fk...@delftdi.com> on 2012/04/13 08:48:26 UTC

Building Xercesc with ICU as static Lib.

LS,

 

Currently our app is using Xerces-C as a static library and this works
just fine. But recently the need has risen to use ICU.

I've found the project in the VC9 folder that'll build various version
of Xerces-C (under Visual Studio), but the combination I'd like (with
ICU as static lib) is not there.

Therefore I modified the ICU Debug x64 project (as a test):

-          I've changed the output to static lib 

-          Link with /MTd (instead of /MDd)

-          Preprocessor add XERCES_STATIC_LIBRARY

-          Preprocessor change XERCES_USE_TRANSCODER_ICU (instead of
XERCES_USE_TRANSCODER_WINDOWS)

-          Preprocessor change XERCES_USE_MSGLOADER_INMEMORY (instead of
XERCES_USE_WIN32_MSGLOADER)

I get a library but when linking with our app it's complaining about
unresolved external symbol "public: __cdecl
xercesc_3_1::InMemMsgLoader::InMemMsgLoader 

Followed by some other (I guess related) linker errors.

 

I've also tried to do the same but use the WIN32_MSGLOADER. Result:
1>xerces-c_static_3D.lib(Win32MsgLoader.obj) : error LNK2005: DllMain
already defined in nafxcwd.lib(dllmodul.obj)

 

Can it be done? Can I create a static Xerces-C library with ICU support?
Or can it only be a DLL?

If it can be done, what are the required preprocessors directives?

Are there other project options to set?

What is the relation between XERCES_USE_TRANSCODER_ICU and
XERCES_USE_MSGLOADER_INMEMORY instead of XERCES_USE_WIN32_MSGLOADER?

I've tried using CygWin, but failed because I can't find the
packageBinaries.pl in the scripts folder as per instruction (
http://xerces.apache.org/xerces-c/build-misc-2.html)

 

Can you help me out?

 

Kind regards.

 

 

                       

 

 

 

 

Frank Kaaijk

Software Engineer

 

Wiltonstraat 41 I 3905 KW  Veenendaal  I The Netherlands

T +31 318 583 472   F +31 318 583 451  M +31 614 647 066

E fkaaijk@delftdi.com  I www.rogan-delft.com
<http://www.rogan-delft.com/>