Fix in Variant's coerce function

Francois Gouget fgouget at free.fr
Fri May 18 17:17:34 CDT 2001


On 18 May 2001, Alexandre Julliard wrote:

> Francois Gouget <fgouget at free.fr> writes:
> 
> >    So I'm in favor of uncommenting the calls in Coerce, and if these
> > cases are really being used then either we do a full-fledged
> > implementation or we write pseudo-stubs for these functions.
> > 
> >    Do we have a know app that crashes with this patch?
> 
> It won't ever get to crashing, since it doesn't even link!

   Sorry about that. I missed it somehow.


> Try a make checklink and you'll see.

   I did not know about checklink.


> Unfortunately because of the way we link libraries you can actually
> create a .so that contains undefined symbols; it will only fail at
> load-time. This is why we have make checklink to spot this kind of
> problems at compile-time.

   Yes I know. It's a pain too for winelib applications. It makes
detecting errors at compile time pretty difficult.

   Maybe checklink should be part of the winelib development tools? And
maybe it should be systematically called after a link?

   Hmmm, is 'make checklink' supposed to work in the top-level
directory? I get:

$ make checklink
gcc -o checklink ./library/checklink.c -L./library -lwine -lncurses -lm
-lutil -ldl && rm -f checklink
make[1]: Entering directory `/home/fgouget/wine/wine.ref/dlls'
make[2]: Entering directory `/home/fgouget/wine/wine.ref/dlls/ddraw'
gcc -o checklink ../../library/checklink.c -L. -lddraw -L../../library
-lwine -L../../ole -lwine_uuid -lncurses -lm  -lutil -ldl && rm -f
checklink
/usr/bin/ld: warning: libuser32.so, needed by ./libddraw.so, not found
(try using -rpath or -rpath-link)
/usr/bin/ld: warning: libx11drv.so, needed by ./libddraw.so, not found
(try using -rpath or -rpath-link)
...

   We should set LD_LIBRARY_PATH like for winebuild & co...

   Even after setting LD_LIBRARY_PATH I get the following though:

$ make checklink
gcc -o checklink ./library/checklink.c -L./library -lwine -lncurses -lm
-lutil -ldl && rm -f checklink
make[1]: Entering directory `/home/fgouget/wine/wine.ref/dlls'
make[2]: Entering directory `/home/fgouget/wine/wine.ref/dlls/ddraw'
gcc -o checklink ../../library/checklink.c -L. -lddraw -L../../library
-lwine -L../../ole -lwine_uuid -lncurses -lm  -lutil -ldl && rm -f 
checklink
/usr/X11R6/lib/libXpm.so.4: undefined reference to `atexit'
collect2: ld returned 1 exit status
...

   That's strange. Shouldn't atexit be defined in the C library? (I
have the 2.2.3-1 .deb here).


--
Francois Gouget         fgouget at free.fr        http://fgouget.free.fr/
                               {free} || die "";





More information about the wine-devel mailing list