"Steven Edwards" <[EMAIL PROTECTED]> wrote:

> With the recent import lib changes on almost everything I try and build 
> I am getting these errors. When using the win32api package from mingw 
> prior to this patch these functions were exported.
> 
> Thanks
> Steven
> 
> brsfolder.o(.text+0xfe0):brsfolder.c: undefined reference to `HeapAlloc@12'

[skipped]

It's an ld bug. Currently ld could not use forwarded references in import
libraries. I reported that bug almost 1.5 years ago in the binutils mailing
list, but it seems nobody interested in fixing it.

Moreover, in order to eliminate decorated (@xx) names in the dll export table
you need to apply the attached patch and use latest binutils. But unfortunately
even it doesn't resolve many other issues with dll linking.

-- 
Dmitry.
diff -u hq/wine/dlls/Makedll.rules.in wine/dlls/Makedll.rules.in
--- hq/wine/dlls/Makedll.rules.in       Fri Dec 13 06:12:34 2002
+++ wine/dlls/Makedll.rules.in  Sat Dec 14 04:59:20 2002
@@ -44,7 +44,7 @@
 # Rules for .dll files
 
 $(MODULE): $(RCOBJS) $(OBJS) $(MODULE).dbg.o $(SPEC_DEF) $(IMPORTLIBS) Makefile.in
-       $(DLLWRAP) -k --def $(SPEC_DEF) -o $@ $(RCOBJS) $(OBJS) $(MODULE).dbg.o 
$(DLLMAIN:%=--entry %) -L$(DLLDIR) $(DELAYIMPORTS:%=-l%) $(IMPORTS:%=-l%) $(ALL_LIBS)
+       $(DLLWRAP) --def $(SPEC_DEF) $(DLLWRAPFLAGS) -o $@ $(RCOBJS) $(OBJS) 
+$(MODULE).dbg.o $(DLLMAIN:%=--entry %) -L$(DLLDIR) $(DELAYIMPORTS:%=-l%) 
+$(IMPORTS:%=-l%) $(ALL_LIBS)
 
 $(SPEC_DEF): $(WINEBUILD)
 
diff -u hq/wine/library/Makefile.in wine/library/Makefile.in
--- hq/wine/library/Makefile.in Mon Aug 05 03:22:04 2002
+++ wine/library/Makefile.in    Sat Dec 14 04:57:16 2002
@@ -33,7 +33,7 @@
        $(RANLIB) $@
 
 libwine.dll: $(OBJS)
-       $(DLLWRAP) $(DLLWRAPFLAGS) --export-all --implib libwine.a -o libwine.dll 
$(OBJS) $(EXTRALIBS)
+       $(DLLWRAP) --export-all --implib libwine.a -o libwine.dll $(OBJS) $(EXTRALIBS)
 
 .PHONY: install_so install_a install_dll
 
diff -u hq/wine/Make.rules.in wine/Make.rules.in
--- hq/wine/Make.rules.in       Fri Dec 13 06:12:34 2002
+++ wine/Make.rules.in  Sat Dec 14 04:58:38 2002
@@ -39,7 +39,7 @@
 LDSHARED  = @LDSHARED@
 DLLTOOL   = @DLLTOOL@
 DLLWRAP   = @DLLWRAP@
-DLLWRAPFLAGS = --add-stdcall-alias
+DLLWRAPFLAGS = -k -Wl,--kill-at,--enable-stdcall-fixup
 AR        = @AR@ rc
 RANLIB    = @RANLIB@
 STRIP     = @STRIP@
diff -u hq/wine/unicode/Makefile.in wine/unicode/Makefile.in
--- hq/wine/unicode/Makefile.in Wed Oct 02 02:51:18 2002
+++ wine/unicode/Makefile.in    Sat Dec 14 04:57:32 2002
@@ -98,7 +98,7 @@
 
 # --export-all doesn't work correctly because of dllwrap's bug
 libwine_unicode.dll: $(OBJS) wine_unicode.def
-       $(DLLWRAP) $(DLLWRAPFLAGS) --def $(SRCDIR)/wine_unicode.def --implib 
libwine_unicode.a -o libwine_unicode.dll $(OBJS)
+       $(DLLWRAP) --def $(SRCDIR)/wine_unicode.def --implib libwine_unicode.a -o 
+libwine_unicode.dll $(OBJS)
 
 .PHONY: install_so install_a install_dll
 

Reply via email to