Subject: How to handle variables (data, etc.) in DLLs?
From: T J Harding <[email-masked]>
To: [email-masked]
Date: Wed, 03 Mar 1999 14:05:40 +0000

Hi

I was porting something to Cygwin and all was going swimmingly, until I
ran into problems building a DLL from object code with global data
symbols (i.e.
nm shows these symbols as type D or C).

Just to make it clearer, a trivial example:

main.c might contain:

extern int foo;
extern void bar(void);
int main ( int argc, char **argv )
{
  foo++;
  bar();
}

and foo.c might contain:

int foo=0;
void bar(void)
{
  foo--;
}

It is foo.o that I want to include in a DLL.

I was using dllwrap 0.2.4 (and dlltool 2.9.4) with b20.1 (95 and NT).
"dllwrap --export-all-symbols" exports the data symbols to the .def
file, but
they seem to be exported as if they were functions, resulting in a core
dump
when a.exe is run.  I've tried putting "DATA" after the symbol name in
the
.def file, which results in the symbol being undefined in the import-lib
libfoo.a, meaning I have to link foo.o in as well as libfoo.a.

So how should one best deal with this situation?  It's not my code, so I
don't 
want to have to alter it significantly just to port it.

Tim

--
Want to unsubscribe from this list?
Send a message to [email-masked]