This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


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

g++/cygwin-B19 linkage problem, multiple definitions


   

bash-2.01$ g++ -o test2 -I. -O2 test2.cc obj.cc
C:\TEMP\ccfBTKHc.o(.text+0x14):obj.cc: multiple definition of
`Middle<int>::~Mid
dle(void)'
C:\TEMP\ccQp5XtO.o(.text$_$_t6Middle1Zi+0x0):test2.cc: first defined
here
collect2: ld returned 1 exit status
bash-2.01$

The following are required to get the multiple definition:
1) Base must virtually inherited from Middle.
2) The compiler has to create ~Middle().




Details:

bash-2.01$ g++ -o test2 -I. -O2 test2.cc obj.cc -v
Reading specs from
\usr\local\lib\gcc-lib\i586-pc-cygwin32\egcs-2.91.57\specs
gcc version egcs-2.91.57 19980901 (egcs-1.1 release)
 \usr\local\lib\gcc-lib\i586-pc-cygwin32\egcs-2.91.57\cpp.exe -lang-c++
-v -I. -
iprefix
C:/Cygnus/B19/H-i386-cygwin32/lib/gcc-lib/i586-pc-cygwin32\egcs-2.91.57\
 -undef -D__GNUC__=2 -D__GNUG__=2 -D__cplusplus -D__GNUC_MINOR__=91
-Di386 -D_WI
N32 -D__CYGWIN32__ -DWINNT -D_X86_=1 -D__STDC__=1
-D__stdcall=__attribute__((__s
tdcall__)) -D__cdecl=__attribute__((__cdecl__))
-D__declspec(x)=__attribute__((x
)) -D__i386__ -D_WIN32 -D__CYGWIN32__ -D__WINNT__ -D_X86_=1 -D__STDC__=1
-D__std
call=__attribute__((__stdcall__)) -D__cdecl=__attribute__((__cdecl__))
-D__decls
pec(x)=__attribute__((x)) -D__i386 -D__WINNT -Asystem(winnt) -Acpu(i386)
-Amachi
ne(i386) -D__EXCEPTIONS -D__OPTIMIZE__ -remap -Asystem(unix) -Acpu(i386)
-Amachi
ne(i386) -Di386 -D__i386 -D__i386__ -Di586 -Dpentium -D__i586 -D__i586__
-D__pen
tium -D__pentium__ test2.cc C:\TEMP\ccSgueCH.ii
GNU CPP version egcs-2.91.57 19980901 (egcs-1.1 release) (80386, BSD
syntax)
#include "..." search starts here:
#include <...> search starts here:
 .
 \usr\local\include\g++
 \usr\local\include
 \usr\local\i586-pc-cygwin32\include
 \usr\local\lib\gcc-lib\i586-pc-cygwin32\egcs-2.91.57\include
 \usr\include
End of search list.
 \usr\local\lib\gcc-lib\i586-pc-cygwin32\egcs-2.91.57\cc1plus.exe
C:\TEMP\ccSgue
CH.ii -quiet -dumpbase test2.cc -O2 -version -o C:\TEMP\cczEb8iX.s
GNU C++ version egcs-2.91.57 19980901 (egcs-1.1 release)
(i586-pc-cygwin32) comp
iled by GNU C version egcs-2.91.57 19980901 (egcs-1.1 release).
 as -o C:\TEMP\ccQlsljc.o C:\TEMP\cczEb8iX.s
 \usr\local\lib\gcc-lib\i586-pc-cygwin32\egcs-2.91.57\cpp.exe -lang-c++
-v -I. -
iprefix
C:/Cygnus/B19/H-i386-cygwin32/lib/gcc-lib/i586-pc-cygwin32\egcs-2.91.57\
 -undef -D__GNUC__=2 -D__GNUG__=2 -D__cplusplus -D__GNUC_MINOR__=91
-Di386 -D_WI
N32 -D__CYGWIN32__ -DWINNT -D_X86_=1 -D__STDC__=1
-D__stdcall=__attribute__((__s
tdcall__)) -D__cdecl=__attribute__((__cdecl__))
-D__declspec(x)=__attribute__((x
)) -D__i386__ -D_WIN32 -D__CYGWIN32__ -D__WINNT__ -D_X86_=1 -D__STDC__=1
-D__std
call=__attribute__((__stdcall__)) -D__cdecl=__attribute__((__cdecl__))
-D__decls
pec(x)=__attribute__((x)) -D__i386 -D__WINNT -Asystem(winnt) -Acpu(i386)
-Amachi
ne(i386) -D__EXCEPTIONS -D__OPTIMIZE__ -remap -Asystem(unix) -Acpu(i386)
-Amachi
ne(i386) -Di386 -D__i386 -D__i386__ -Di586 -Dpentium -D__i586 -D__i586__
-D__pen
tium -D__pentium__ obj.cc C:\TEMP\ccSgueCH.ii
GNU CPP version egcs-2.91.57 19980901 (egcs-1.1 release) (80386, BSD
syntax)
#include "..." search starts here:
#include <...> search starts here:
 .
 \usr\local\include\g++
 \usr\local\include
 \usr\local\i586-pc-cygwin32\include
 \usr\local\lib\gcc-lib\i586-pc-cygwin32\egcs-2.91.57\include
 \usr\include
End of search list.
 \usr\local\lib\gcc-lib\i586-pc-cygwin32\egcs-2.91.57\cc1plus.exe
C:\TEMP\ccSgue
CH.ii -quiet -dumpbase obj.cc -O2 -version -o C:\TEMP\cczEb8iX.s
GNU C++ version egcs-2.91.57 19980901 (egcs-1.1 release)
(i586-pc-cygwin32) comp
iled by GNU C version egcs-2.91.57 19980901 (egcs-1.1 release).
 as -o C:\TEMP\cchCkarg.o C:\TEMP\cczEb8iX.s
 \usr\local\lib\gcc-lib\i586-pc-cygwin32\egcs-2.91.57\collect2.exe -o
test2.exe
\usr\local\lib\crt0.o -LC:\Cygnus\B19\H-i386-cygwin32\lib\gcc-lib
-L\usr\local\l
ib\gcc-lib\i586-pc-cygwin32\egcs-2.91.57
-L\usr\local\i586-pc-cygwin32\lib -L\us
r\local\lib C:\TEMP\ccQlsljc.o C:\TEMP\cchCkarg.o -lstdc++ -lm -lgcc
-lcygwin -l
kernel32 -ladvapi32 -lshell32 -lgcc
C:\TEMP\cchCkarg.o(.text+0x14):obj.cc: multiple definition of
`Middle<int>::~Mid
dle(void)'
C:\TEMP\ccQlsljc.o(.text$_$_t6Middle1Zi+0x0):test2.cc: first defined
here
collect2: ld returned 1 exit status
bash-2.01$
________________________

Jan N. Reimers
Manager, Materials Research
Moli, Energy (1990) Ltd.
________________________

test2.h

test2.cc

obj.cc


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