This is the mail archive of the cygwin@sourceware.cygnus.com mailing list for the Cygwin project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Exporting c++-classes from dll?


Hi!

I'm trying to port a c++-project from Unix to NT4.0 using b18. Thereby
I use a Date/Time-package consisting of several classes dealing with
Dates and Times (class Date, class Time, class Month and so on). Each
of this classes is packed into a separate Module (.cc/.h-File).
There's no problem compiling those modules into '.o'-Files, but don't
get them packed into a single dll.  After compiling I'm using the
following commands to build a dll:

--------------------- cut here ---------------------

if [ ! -f fixup.o ]; then
  echo 'asm (".section .idata$3\n" ".long 0,0,0,0, 0,0,0,0");' >fixup.cc
  g++ -c fixup.cc
fi;

# --- create a temporary archive
ar rs tmp.a *.o

# --- create .def-File
echo EXPORTS > DateTime.def
nm tmp.a | egrep " [CT] " | sed s/.........T._//g >xxx.tmp
sed s/.........C._//g q.scr >> DateTime.def
rm -f xxx.tmp

g++ -s -v  -nostartfiles -Wl,--dll -e _dll_entry@12 -o tmp.dll -Wl,--base-file=tmp.base *.o

--------------------- cut here ---------------------

The DateTime.def-File looks like the following:

--------------------- cut here ---------------------

EXPORTS
BreakDown__C4DateRiR7WeekDayR5MonthT1
First__4Date
GetDateStr__4Date
GetMDay__C4Date
GetMonth__C4Date
GetPureDateStr__4Date
GetRep__4DateiG5Monthi
GetWDay__C4Date
GetYear__C4Date
InitializeEpoch__4Date
Last__4Date
SetDateFromChar__4DatePc
SetDateFromInt__4Dateiii
Today__4Date
__4DateG4Time
__4DatePc
__4DateiG5Monthi
__4Dateiii
Datetime_Init
dll_entry@12
Offset__5Monthi
Size__5Monthi
:
:
--------------------- cut here ---------------------

The link-stage outputs the following:

--------------------- cut here ---------------------

Reading specs from C:\Programme\gnuwin32\b18\H-i386-cygwin32\lib\gcc-lib\i386-cygwin32\cygnus-2.7.2-970404\specs
gcc version cygnus-2.7.2-970404
 C:\Programme\gnuwin32\b18\H-i386-cygwin32\lib\gcc-lib\i386-cygwin32\cygnus-2.7.2-970404\../../../../i386-cygwin32\bin\ld.exe -o tmp.dll -e dll_entry@12 -s
-LC:\Programme\gnuwin32\b18\H-i386-cygwin32\lib\gcc-lib\i386-cygwin32\cygnus-2.7.2-970404
-LC:\Programme\gnuwin32\b18\H-i386-cygwin32\lib\gcc-lib
-LC:\Programme\gnuwin32\b18\H-i386-cygwin32\lib\gcc-lib\i386-cygwin32\cygnus-2.7.2-970404\../../../../i386-cygwin32\lib
-LC:\Programme\gnuwin32\b18\H-i386-cygwin32\lib\gcc-lib\i386-cygwin32\cygnus-2
.7.2-970404\../../.. --dll --base-file=tmp.base Date.o
DateTimePkgInit.o Month.o Time.o TinyTime.o WeekDay.o Year.o fixup.o
-lstdc++ -lm -lgcc -lcygwin -lkernel32 -lgcc

Date.o: In function `Date::GetRep(int, Month, int)':
/home/project/packages/cms++-2.0/src/types/Date.cc:18: undefined reference to `GLOBAL_OFFSET_TABLE_'
/home/project/packages/cms++-2.0/src/types/Date.cc:19: undefined reference to `Offset__4Yeari@PLT'
/home/project/packages/cms++-2.0/src/types/Date.cc:19: undefined reference to `Offset__5Monthi@PLT'
Date.o: In function `_4DateiG5Monthi':
/home/project/packages/cms++-2.0/src/types/Date.cc:22: undefined reference to `GLOBAL_OFFSET_TABLE_'
/home/project/packages/cms++-2.0/src/types/Date.cc:23: undefined reference to `__5MonthRC5Month@PLT'
/home/project/packages/cms++-2.0/src/types/Date.cc:23: undefined reference to `GetRep__4DateiG5Monthi@PLT'
Date.o: In function `_4Dateiii':
/home/project/packages/cms++-2.0/src/types/Date.cc:27: undefined reference to `GLOBAL_OFFSET_TABLE_'
/home/project/packages/cms++-2.0/src/types/Date.cc:28: undefined reference to `__5Monthi@PLT'
/home/project/packages/cms++-2.0/src/types/Date.cc:29: undefined reference to `__5MonthRC5Month@PLT'
/home/project/packages/cms++-2.0/src/types/Date.cc:29: undefined reference to `GetRep__4DateiG5Monthi@PLT'
Date.o: In function `_4DatePc':
/home/project/packages/cms++-2.0/src/types/Date.cc:31: undefined reference to `GLOBAL_OFFSET_TABLE_'
/home/project/packages/cms++-2.0/src/types/Date.cc:34: undefined reference to `strlen@PLT'
/home/project/packages/cms++-2.0/src/types/Date.cc:34: undefined reference to `strlen@PLT'
/home/project/packages/cms++-2.0/src/types/Date.cc:34: undefined reference to `__assert@PLT'
/home/project/packages/cms++-2.0/src/types/Date.cc:36: undefined reference to `strcpy@PLT'
/home/project/packages/cms++-2.0/src/types/Date.cc:37: undefined reference to `strtok@PLT'
/home/project/packages/cms++-2.0/src/types/Date.cc:38: undefined reference to `strtok@PLT'
/home/project/packages/cms++-2.0/src/types/Date.cc:39: undefined reference to `strtok@PLT'
/home/project/packages/cms++-2.0/src/types/Date.cc:40: undefined reference to `atoi@PLT'
/home/project/packages/cms++-2.0/src/types/Date.cc:41: undefined reference to `atoi@PLT'
/home/project/packages/cms++-2.0/src/types/Date.cc:42: undefined reference to `atoi@PLT'
/home/project/packages/cms++-2.0/src/types/Date.cc:43: undefined reference to `strlen@PLT'
/home/project/packages/cms++-2.0/src/types/Date.cc:54: undefined reference to `__5Monthi@PLT'
/home/project/packages/cms++-2.0/src/types/Date.cc:55: undefined reference to `__5MonthRC5Month@PLT'
/home/project/packages/cms++-2.0/src/types/Date.cc:55: undefined reference to `GetRep__4DateiG5Monthi@PLT'
Date.o: In function `_4DateG4Time':
/home/project/packages/cms++-2.0/src/types/Date.cc:58: undefined
reference to `GLOBAL_OFFSET_TABLE_'

--------------------- cut here ---------------------

Could anybody help me to find out what's going on there? Is there a
general description how to build dlls containing c++-classes?

Many thx in advance for every suggestion,

--- Roland.

---
Roland Geier                    Phone: ++49 (8505) 92181          
Universitaet Passau, GER 
Lehrstuhl Prof. Dr. Donner      geier@forwiss.uni-passau.de	
D-94032 Passau                  http://www.uni-passau.de/~geier/











-
For help on using this list (especially unsubscribing), send a message to
"gnu-win32-request@cygnus.com" with one line of text: "help".


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]