Hi!
I'm currently looking into whether I can use DLX for implementing 
a the native method interface for the Dos port of kaffe (kaffepc);
is there a more recent version than the 2.91 I got from the djgpp
distibution? 
I'm doing my development using the djgpp cross compiler under linux;
this means I'm going to port your helper programs (in particular
dlxgen) to linux (didn't start yet, but I hope they will almost
compile out of the box) - just mention this to avoid being blacklisted.

A contribution I'd like to make: the dlxload.h header file doesn't 
work with plain C - the ``extern "C++" '' directive just doesn't
exist. I made a few changes to make this work - it's kludgy 'cause
I use the C++ mangled names; a more sensible solution would be 
to create a few `` extern "C"'' wrappers that call the original
functions, but then you have the additional function call overhead.

Anyway, my version of dlxload.h is below.
Greetings
kg


/* DLX Loader V2.91
* Copyright (c) 1997-1998, Nanosoft, Inc.
*/

/* (KG) (1999-04-20) I changed the #ifdefs to
** make this work with C (extern "C++" was a nice try,
** but things don't work out this easy
*/
#ifndef __DLX_LOADER_
#define __DLX_LOADER_


#ifndef __cplusplus
/* (KG) macros for the C++ mangled names - this is kludge,
*  but at least we can access the C++ functions (at least
*  until the mangling algorithm of gcc changes ;-)
*/

#define DLXLoad DLXLoad__FPc
#define DLXUnload DLXUnload__Fx
#define DLXImport DLXImport__FPPc
#define DLXGetEntry DLXGetEntry__FxPc
#define DLXGetMemoryBlock DLXGetMemoryBlock__Fx
#define DLXGetMemoryBlockLength DLXGetMemoryBlockLength__Fx

/* No overloading in C - so we invent a new name for
*  "DLXUnload (name)" - shouldn't be used anyway
*/

#define DLXUnloadByName DLXUnload__FPc
#endif

typedef long long hdlx_t;

extern void* (*DLXOpenFile)(char*);
extern void (*DLXCloseFile)(void*);
extern void (*DLXReadFile)(void*,long,void*);

extern void (*DLXError)(long,char*);
extern hdlx_t (*DLXGetID)(char*);

extern void* (*DLXMalloc)(unsigned long);
extern void (*DLXFree)(void*);
extern void (*DLXRealloc)(void*,unsigned long);

hdlx_t DLXLoad(char* name);
void DLXUnload(hdlx_t handle);
#ifdef __cplusplus
/* (KG) as above - no overloading in C */
void DLXUnload(char* name);
#else
void DLXUnloadByName(char* name);
#endif
void DLXImport(char** symbols);
void* DLXGetEntry(hdlx_t target, char* name);
void* DLXGetMemoryBlock(hdlx_t target);
long DLXGetMemoryBlockLength(hdlx_t target);

#endif
