From: Alain T. <ala...@fn...> - 2002-11-02 22:42:30
|
I am a MinGW newby. I do not understand an error returned by the linker. = May anyone have suggestion ? I compile a dll (../lib/fltkdll_imagesd.dll), referencing a library = (fltkdlld) located in a directory included in the search path = (-L../lib). The linker does not find symbols (for eg: = `___lib_libfltkdlld_a_iname'), that actually exist in the library (with = more '__') : the command :=20 nm ../fltk/lib/libfltkdlld.a returns: dt.o: 00000000 b .bss 00000000 d .data 00000000 i .idata$4 00000000 i .idata$5 00000000 i .idata$7 00000000 t .text 00000000 I _____lib_libfltkdlld_a_iname dh.o: 00000000 b .bss 00000000 d .data 00000000 i .idata$2 00000000 i .idata$4 00000000 i .idata$5 00000000 t .text U _____lib_libfltkdlld_a_iname 00000000 I __head____lib_libfltkdlld_a 00000004 i fthunk 00000004 i hname (etc...) ______________ make -f fltkdll_images.mak make[1]: Entering directory `/d/Download/Fltk2.0/fltk/MinGW' dllwrap --driver-name c++ --export-all-symbols --def = ../lib/fltkdll_imagesd.def -Wl,--subsystem,windows --implib = ../lib/libfltkdll_imagesd.a -L../lib -o ../lib/fltkdll_imagesd.dll = ../src/fl_bmp.o ../src/fl_gif.o ../images/Fl_Guess_Image.o = ../images/fl_jpeg.o ../images/fl_png.o ../src/Fl_Shared_Image.o = ../src/fl_xpm.o -lfltkdlld -lopengl32 -lwsock32 -lkernel32 -luser32 = -lgdi32 -lwinspool -lcomdlg32 -ladvapi32 -lshell32 -lole32 -loleaut32 = -luuid Info: resolving _fl_gc by linking to __imp__fl_gc (auto-import) Info: resolving __ZN2Fl7warningE by linking to __imp___ZN2Fl7warningE = (auto-import) fu000001.o(.idata$3+0xc): undefined reference to = `___lib_libfltkdlld_a_iname' fu000002.o(.idata$3+0xc): undefined reference to = `___lib_libfltkdlld_a_iname' fu000003.o(.idata$3+0xc): undefined reference to = `___lib_libfltkdlld_a_iname' fu000004.o(.idata$3+0xc): undefined reference to = `___lib_libfltkdlld_a_iname' fu000005.o(.idata$3+0xc): undefined reference to = `___lib_libfltkdlld_a_iname' fu000006.o(.idata$3+0xc): more undefined references to = `___lib_libfltkdlld_a_iname' follow nmth000000.o(.idata$4+0x0): undefined reference to `_nm__fl_gc' nmth000013.o(.idata$4+0x0): undefined reference to = `_nm___ZN2Fl7warningE' c:\MinGW\bin\dllwrap.exe: c++ exited with status 1 make[1]: *** [../lib/fltkdll_imagesd.dll] Error 1 make[1]: Leaving directory `/d/Download/Fltk2.0/fltk/MinGW' make: *** [fltkdll_images] Error 2 |
From: <dan...@ya...> - 2002-11-03 01:09:02
|
--- Alain Touret <ala...@fn...> wrote: > I am a MinGW newby. I do not understand an error returned by the linker. May > anyone have suggestion ? > > I compile a dll (../lib/fltkdll_imagesd.dll), referencing a library > (fltkdlld) located in a directory included in the search path (-L../lib). The > linker does not find symbols (for eg: `___lib_libfltkdlld_a_iname'), that > actually exist in the library (with more '__') : > ______________ > make -f fltkdll_images.mak > make[1]: Entering directory `/d/Download/Fltk2.0/fltk/MinGW' > dllwrap --driver-name c++ --export-all-symbols --def > ../lib/fltkdll_imagesd.def -Wl,--subsystem,windows --implib > ../lib/libfltkdll_imagesd.a -L../lib -o ../lib/fltkdll_imagesd.dll > ../src/fl_bmp.o ../src/fl_gif.o ../images/Fl_Guess_Image.o > ../images/fl_jpeg.o ../images/fl_png.o ../src/Fl_Shared_Image.o > ../src/fl_xpm.o -lfltkdlld -lopengl32 -lwsock32 -lkernel32 -luser32 -lgdi32 > -lwinspool -lcomdlg32 -ladvapi32 -lshell32 -lole32 -loleaut32 -luuid > Info: resolving _fl_gc by linking to __imp__fl_gc (auto-import) > Info: resolving __ZN2Fl7warningE by linking to __imp___ZN2Fl7warningE > (auto-import) > fu000001.o(.idata$3+0xc): undefined reference to `___lib_libfltkdlld_a_iname' > fu000002.o(.idata$3+0xc): undefined reference to `___lib_libfltkdlld_a_iname' > fu000003.o(.idata$3+0xc): undefined reference to `___lib_libfltkdlld_a_iname' > fu000004.o(.idata$3+0xc): undefined reference to `___lib_libfltkdlld_a_iname' > fu000005.o(.idata$3+0xc): undefined reference to `___lib_libfltkdlld_a_iname' > fu000006.o(.idata$3+0xc): more undefined references to > `___lib_libfltkdlld_a_iname' follow > nmth000000.o(.idata$4+0x0): undefined reference to `_nm__fl_gc' > nmth000013.o(.idata$4+0x0): undefined reference to `_nm___ZN2Fl7warningE' > c:\MinGW\bin\dllwrap.exe: c++ exited with status 1 > make[1]: *** [../lib/fltkdll_imagesd.dll] Error 1 > make[1]: Leaving directory `/d/Download/Fltk2.0/fltk/MinGW' > make: *** [fltkdll_images] Error 2 > If you build your import lib with dllwrap or dlltool, the magic auto-import symbols are not generated, so you will get undefined references when trying to fetch data symbols into your app or another dll using auto-import. The problem appears to be in libfltkdlld.a. How was it built? Two possible solutions: 1) make sure that all imported _variables_ are marked with dllimport in your source. 2) build your import lib and dll with gcc -shared rather than dllwrap. Danny > http://careers.yahoo.com.au - Yahoo! Careers - 1,000's of jobs waiting online for you! |
From: Alain T. <ala...@fn...> - 2002-11-03 12:17:15
|
----- Original Message ----- From: "Danny Smith" <dan...@ya...> To: "Alain Touret" <ala...@fn...>; <min...@li...> Sent: Sunday, November 03, 2002 2:08 AM Subject: Re: [Mingw-users] undefined symbols with dllwrap on a library > --- Alain Touret <ala...@fn...> wrote: > I am a MinGW newby. I do not > understand an error returned by the linker. May > > anyone have suggestion ? > > > > I compile a dll (../lib/fltkdll_imagesd.dll), referencing a library > > (fltkdlld) located in a directory included in the search path (-L../lib). The > > linker does not find symbols (for eg: `___lib_libfltkdlld_a_iname'), that > > actually exist in the library (with more '__') : > > ______________ > > make -f fltkdll_images.mak > > make[1]: Entering directory `/d/Download/Fltk2.0/fltk/MinGW' > > dllwrap --driver-name c++ --export-all-symbols --def > > ../lib/fltkdll_imagesd.def -Wl,--subsystem,windows --implib > > ../lib/libfltkdll_imagesd.a -L../lib -o ../lib/fltkdll_imagesd.dll > > ../src/fl_bmp.o ../src/fl_gif.o ../images/Fl_Guess_Image.o > > ../images/fl_jpeg.o ../images/fl_png.o ../src/Fl_Shared_Image.o > > ../src/fl_xpm.o -lfltkdlld -lopengl32 -lwsock32 -lkernel32 -luser32 -lgdi32 > > -lwinspool -lcomdlg32 -ladvapi32 -lshell32 -lole32 -loleaut32 -luuid > > Info: resolving _fl_gc by linking to __imp__fl_gc (auto-import) > > Info: resolving __ZN2Fl7warningE by linking to __imp___ZN2Fl7warningE > > (auto-import) > > fu000001.o(.idata$3+0xc): undefined reference to `___lib_libfltkdlld_a_iname' > > fu000002.o(.idata$3+0xc): undefined reference to `___lib_libfltkdlld_a_iname' > > fu000003.o(.idata$3+0xc): undefined reference to `___lib_libfltkdlld_a_iname' > > fu000004.o(.idata$3+0xc): undefined reference to `___lib_libfltkdlld_a_iname' > > fu000005.o(.idata$3+0xc): undefined reference to `___lib_libfltkdlld_a_iname' > > fu000006.o(.idata$3+0xc): more undefined references to > > `___lib_libfltkdlld_a_iname' follow > > nmth000000.o(.idata$4+0x0): undefined reference to `_nm__fl_gc' > > nmth000013.o(.idata$4+0x0): undefined reference to `_nm___ZN2Fl7warningE' > > c:\MinGW\bin\dllwrap.exe: c++ exited with status 1 > > make[1]: *** [../lib/fltkdll_imagesd.dll] Error 1 > > make[1]: Leaving directory `/d/Download/Fltk2.0/fltk/MinGW' > > make: *** [fltkdll_images] Error 2 > > > > If you build your import lib with dllwrap or dlltool, the magic auto-import > symbols are not generated, so you will get undefined references when trying to > fetch data symbols into your app or another dll using auto-import. The problem > appears to be in libfltkdlld.a. How was it built? using dllwrap exactly the same way as above ! > Two possible solutions: > > 1) make sure that all imported _variables_ are marked with dllimport in your > source. > 2) build your import lib and dll with gcc -shared rather than dllwrap. I will try these solutions. Thank you for your response ! Alain > > Danny > > > > http://careers.yahoo.com.au - Yahoo! Careers > - 1,000's of jobs waiting online for you! |