Hello,

I tried to compile XML::Xerces 2.0.0-3 under Windows (2000 SP3; MS VC6.0; Perl 5.6.1 - Activestate Build 629), using "dmake". Unfortunately I did not completely succeed because of linker problems. Maybe someone can comment on what I did wrong or even guide me in the right direction? Here is what I did:

1. Made several changes to "Makefile.PL" and "Manifest" (see diffs below). I had to rename Xerces.C to Xerces.c, otherwise dmake would not process it.

2. Then everything compiled OK (see command line below).

3. Linking produced 7 errors. 6 of them have to do with the overloaded SAX exceptions, one concerns XMLScanner_getGrammar. Down below I have listed the offending lines in Xerces.c - they look right to me. After commenting out these lines (or changing "new SAXNotSupportedException()" and "new SAXNotRecognizedException()" into "new SAXException()") the DLL is created, but produces errors in several of the tests (mostly in connection with SAX exceptions as one would suppose).

Where did I make a mistake? Did I miss a linker option? Or could the .lib file for Windows be wrong or incomplete (I took "xerces-c_2.lib" from the "xerces-c2_0_0-win32" distribution)? Should I build my own Xerces-c DLL?

4. By the way, " 2>/dev/null" (which appears in some of the tests) also produces errors under Windows.

Merry Christmas and thanks for any hints,

Martin


diff orig/Makefile.PL Makefile.PL
# ---------------------------------
131c131
< my $LIBXERCES = "-lxerces-c";
---
> my $LIBXERCES = "-lxerces-c_2"; # actual name of the .lib
165c165
< \$(MAKE) -C Handler static
---
> cd Handler && \${MAKE} static
173c173
< my $CFLAGS = '-D_REENTRANT';
---
> my $CFLAGS = '-D_REENTRANT -DWIN32 -TP -GX -DHAS_BOOL'; # from config.pm
190,192c190,192
< Xerces.C: Xerces.i typemaps.i @header_files postSource.pl
< \$(SWIG) -DVERSION="$XERCES_PERL_VERSION" \$(INC) -perl5 -c++ -shadow -o Xerces.C Xerces.i
< perl postSource.pl Xerces.C
---
> xerces.c: Xerces.i typemaps.i @header_files postSource.pl
> \$(SWIG) -DVERSION="$XERCES_PERL_VERSION" \$(INC) -perl5 -c++ -shadow -o xerces.c Xerces.i
> perl postSource.pl xerces.c
196c196
< Xerces.pm: Xerces.C postModule.pl Xerces-extra.pm
---
> Xerces.pm: xerces.c postModule.pl Xerces-extra.pm
205c205
< \$(MAKE) -C Handler static
---
> cd Handler && \${MAKE} static


diff orig/Manifest Manifest
# ---------------------------------
28c28
< Xerces.C
---
> Xerces.c


Compiler command line
# ---------------------------------
cl -c -I. -IHandler -IC:\xerces-c2_0_0-win32\include -D_REENTRANT -DWIN32 -TP
-GX -DHAS_BOOL -O1 -MD -DNDEBUG -DVERSION=\"2.0.0-3\" -DXS_VERSION=\"2.0.0-3\" "-IC:\perl629\lib\CORE" Xerces.c

Linker command line
# ---------------------------------
link -out:blib\arch\auto\XML\Xerces\Xerces.dll -dll -nologo -nodefaultlib -release -libpath:"C:\p4view\Apps\ActivePerl\MSI\data\ActivePerl\Perl\lib\CORE" -machine:x86 Xerces.obj blib\arch/auto/Handler/Handler.lib C:\perl629\lib\CORE\perl56.lib
C:\xerces-c2_0_0-win32\lib\xerces-c_2.lib C:\PROGRA~1\MICROS~2\VC98\LIB\oldnames.lib C:\PROGRA~1\MICROS~2\VC98\LIB\kernel32.lib C:\PROGRA~1\MICROS~2\VC98\LIB\user32.lib
C:\PROGRA~1\MICROS~2\VC98\LIB\gdi32.lib
C:\PROGRA~1\MICROS~2\VC98\LIB\winspool.lib
C:\PROGRA~1\MICROS~2\VC98\LIB\comdlg32.lib
C:\PROGRA~1\MICROS~2\VC98\LIB\advapi32.lib
C:\PROGRA~1\MICROS~2\VC98\LIB\shell32.lib
C:\PROGRA~1\MICROS~2\VC98\LIB\ole32.lib
C:\PROGRA~1\MICROS~2\VC98\LIB\oleaut32.lib
C:\PROGRA~1\MICROS~2\VC98\LIB\netapi32.lib
C:\PROGRA~1\MICROS~2\VC98\LIB\uuid.lib
C:\PROGRA~1\MICROS~2\VC98\LIB\wsock32.lib
C:\PROGRA~1\MICROS~2\VC98\LIB\mpr.lib
C:\PROGRA~1\MICROS~2\VC98\LIB\winmm.lib
C:\PROGRA~1\MICROS~2\VC98\LIB\version.lib
C:\PROGRA~1\MICROS~2\VC98\LIB\odbc32.lib
C:\PROGRA~1\MICROS~2\VC98\LIB\odbccp32.lib C:
\PROGRA~1\MICROS~2\VC98\LIB\msvcrt.lib
-def:Xerces.def

Link errors
# ---------------------------------
Xerces.obj : error LNK2001:
unresolved external symbol
"public: __thiscall SAXNotSupportedException::SAXNotSupportedException(void)"
(??0SAXNotSupportedException@@QAE@XZ)

Xerces.obj : error LNK2001:
unresolved external symbol
"public: __thiscall SAXNotSupportedException::SAXNotSupportedException (unsigned short const * const)"
(??0SAXNotSupportedException@@QAE@QBG@Z)

Xerces.obj : error LNK2001:
unresolved external symbol
"public: __thiscall SAXNotSupportedException::SAXNotSupportedException(class SAXException const &)"
(??0SAXNotSupportedException@@QAE@ABVSAXException@@@Z)

Xerces.obj : error LNK2001:
unresolved external symbol
"public: __thiscall SAXNotRecognizedException::SAXNotRecognizedException(void)"
(??0SAXNotRecognizedException@@QAE@XZ)

Xerces.obj : error LNK2001:
unresolved external symbol
"public: __thiscall SAXNotRecognizedException::SAXNotRecognizedException(unsigned short const * const)"
(??0SAXNotRecognizedException@@QAE@QBG@Z)

Xerces.obj : error LNK2001:
unresolved external symbol
"public: __thiscall SAXNotRecognizedException::SAXNotRecognizedException(class SAXException const&)"
(??0SAXNotRecognizedException@@QAE@ABVSAXException@@@Z)

Xerces.obj : error LNK2001:
unresolved external symbol
"public: class Grammar * __thiscall GrammarResolver::getGrammar(unsigned short const * const)"
(?getGrammar@GrammarResolver@@QAEPAVGrammar@@QBG@Z)

dmake.exe: Error code 96, while making 'blib\arch\auto\XML\Xerces\Xerces.dll'


#------------------------------------------------
The following lines in Xerces.c cause these errors:

8256: result = (SAXNotSupportedException *)new SAXNotSupportedException();
8300: result = (SAXNotSupportedException *)new SAXNotSupportedException((XMLCh const *)arg1);
8347: result = (SAXNotSupportedException *)new SAXNotSupportedException((SAXException const &)*arg1);
8416: result = (SAXNotRecognizedException *)new SAXNotRecognizedException();
8460: result = (SAXNotRecognizedException *)new SAXNotRecognizedException((XMLCh const *)arg1);
8507: result = (SAXNotRecognizedException *)new SAXNotRecognizedException((SAXException const &)*arg1);
18776: result = (Grammar *)(arg1)->getGrammar((XMLCh const *)arg2);


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to