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/>