From: Matriark T. <mat...@re...> - 2002-06-12 17:22:55
|
On Wed, 12 Jun 2002 20:06:38 +1000 (EST) Danny Smith <dan...@ya...> wrote: > --- Matriark TerVel <mat...@re...> wrote: > Hello all, > > > > When trying to link an app (which has linked before fine in the past) i now > > get these linker errors. MinGW is in /usr/cross-tools and my liner line is: > > > > I think you are mixing code built with new G++ with old libstdc++. You can't > do that. Nor can you do the converse. Also with new libstdc++-v3, references > to iostream and STL classes need to be in namespace std. > > See below: > > > g++ -o gserver.exe cfg.o gserver.o levels.o otherstuff.o pascalstrings.o > > convertedclasses.o passwords.o -L/usr/cross-tools/i386-mingw32msvc/lib > > -L/usr/lib/mingw32 -L. -L/usr/cross-tools/lib/gcc-lib/i386-mingw32msvc/2.95.2 > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ > old libstdc++.a > > > -L/usr/cross-tools/i386-mingw32msvc/lib -lstdc++ -lws2_32 libsqlite.a libz.a > > -lm > > > > the majority of the errors are: > > > > /root/gserver-win32/src/convertedclasses.cpp:369: undefined reference to > > `istream::tellg()' > > /root/gserver-win32/src/convertedclasses.cpp:370: undefined reference to > > `istream::seekg(long, ios::seek_dir)' > > Are you using old G++ headers here? > The names are not in namespace std. > > ==snip++ > > > /usr/cross-tools/include/g++-3/iostream.h:230: undefined reference to `VTT > > for ifstream' > > /usr/cross-tools/include/g++-3/iostream.h:230: undefined reference to `VTT > > for ifstream' > > /usr/cross-tools/include/g++-3/iostream.h:230: undefined reference to `VTT > > for ifstream' > > These are old headers. The new ones are in include/g++-v3. > > ==snip== > > Here is where I get concerned about mixing ABI's > > > /root/gserver-win32/src/convertedclasses.cpp(.eh_frame+0x12): undefined > > reference to `__gxx_personality_v0' > > passwords.o: In function `des_set_key': > > /root/gserver-win32/src/fcrypt.h:349: undefined reference to > > `__gxx_personality_v0' > > > __gxx_personality_v0 is generated by new G++ compiler. That's why I'm guessing > that you're mixing objects from old and new G++. > > Danny > > > collect2: ld returned 1 exit status > > make: *** [gserver] Error 1 > > [root@localhost src]# yeah. i forgot to set the path to the older gcc :P I was trying to use the old gcc headers with gcc 3.0.4 (my native gcc). Thanks, -- Matriark TerVel Systems Administrator / Programmer Anti-Graal HQ http://opengraal.com |