D - Symbol Errors in Linker
- Brad Anderson (87/87) Sep 19 2003 Hello all,
Hello all,
I've tried to wrap expat.h and used it in outline.d and got the following,
including an unexpected termination in OPTLINK. Thoughts?
digc ./src/outline.d -lib=./lib/libexpat.lib -exe=./bin/outline
Searching source for imports.
Expanding import libraries... d:\dmd\bin\..\..\dm\bin\link.exe
outline,./bin/outline.exe,,user32+kernel32/RC:digc_manifest.res/noi;
OPTLINK (R) for Win32 Release 7.50B1
Copyright (C) Digital Mars 1989 - 2001 All Rights Reserved
OPTLINK : Warning 9: Unknown Option : OUTLINE.EXE
d:\dm\bin\..\lib\SNN.lib(excptlst)
Error 1: Previous Definition Different : _end
outline.obj(outline)
Error 42: Symbol Undefined _XML_GetErrorCode
outline.obj(outline)
Error 42: Symbol Undefined _XML_ErrorString
outline.obj(outline)
Error 42: Symbol Undefined _XML_GetCurrentLineNumber
outline.obj(outline)
Error 42: Symbol Undefined _XML_ParserCreate
outline.obj(outline)
Error 42: Symbol Undefined _XML_SetElementHandler
outline.obj(outline)
Error 42: Symbol Undefined _XML_Parse
--- errorlevel 1
d:\dmd\bin\dmd.exe -version=WindowsXP ./bin/outline.exe .\src\outline.d
-I\dmd\src digc_manifest.res -Idigc_temp
--- errorlevel 1
outline.d:
import c.stdio;
import src.expat;
import file;
import string;
const int BUFFSIZE = 8192;
int Depth;
extern (C) {
void start(void *data, char *el, char **attr) {
int i;
for (i = 0; i < Depth; i++)
printf(" ");
printf("%.*s", el);
for (i = 0; attr[i]; i += 2) {
printf(" %.*s='%.*s'", attr[i], attr[i + 1]);
}
printf("\n");
Depth++;
} /* End of start handler */
}
extern (C) {
void end(void *data, char *el) {
Depth--;
} /* End of end handler */
}
int main() {
char[] fInput;
char[][] inlines;
char* buf;
int i;
int len;
int done;
// open the input file
fInput = cast(char[])file.read("mcs.xml");
// split into lines based on CR
inlines=splitlines(fInput);
XML_Parser p = XML_ParserCreate(null);
if (! p) {
printf("Couldn't allocate memory for parser\n");
exit(-1);
}
XML_SetElementHandler(p, start, end);
for (i = 0; i < inlines.length; i++) {
buf=string.toStringz(inlines[i][]);
len=inlines[i][].length;
done=0;
if (! XML_Parse(p, buf, len, done)) {
printf("Parse error at line %d:\n%.*s\n",
XML_GetCurrentLineNumber(p),
XML_ErrorString(XML_GetErrorCode(p)));
exit(-1);
}
}
return 0;
} /* End of main */
Sep 19 2003








Brad Anderson <brad sankaty.com>