| delorie.com/archives/browse.cgi | search |
| Mailing-List: | contact cygwin-help AT sourceware DOT cygnus DOT com; run by ezmlm |
| List-Subscribe: | <mailto:cygwin-subscribe AT sources DOT redhat DOT com> |
| List-Archive: | <http://sources.redhat.com/ml/cygwin/> |
| List-Post: | <mailto:cygwin AT sources DOT redhat DOT com> |
| List-Help: | <mailto:cygwin-help AT sources DOT redhat DOT com>, <http://sources.redhat.com/ml/#faqs> |
| Sender: | cygwin-owner AT sources DOT redhat DOT com |
| Delivered-To: | mailing list cygwin AT sources DOT redhat DOT com |
| Message-ID: | <004f01c0da1d$09b9c450$d2823bd5@dima> |
| From: | "Dmitry Timoshkov" <dmitry AT baikal DOT ru> |
| To: | <cygwin AT cygwin DOT com> |
| Subject: | Linking with "stdcall" library |
| Date: | Fri, 11 May 2001 21:18:42 +0800 |
| MIME-Version: | 1.0 |
| X-Priority: | 3 |
| X-MSMail-Priority: | Normal |
| X-Mailer: | Microsoft Outlook Express 5.50.4133.2400 |
| X-MimeOLE: | Produced By Microsoft MimeOLE V5.50.4133.2400 |
Hello all.
Sorry if it was already answered before. But reading faq.txt didn't help.
This time I'm experimenting with creating library which does export
functions with stdcall naming convention. I *really* need to create
and use them, so it's not an option to use cdecl instead.
Here is the description what I do:
I created test-dll.def file:
-- start of test-dll.def --
EXPORTS
MyCloseHandle
-- end of test-dll.def --
then I created import library libtest-dll.a using dlltool:
dlltool --add-stdcall-alias --input-def test-dll.def --output-lib libtest-dll.a
then I created test-gcc.c source which uses function exported by libtest-dll:
-- start of test-gcc.c --
#define __stdcall __attribute__((__stdcall__))
extern void __stdcall MyCloseHandle(int handle);
int main(void)
{
MyCloseHandle(-1);
return 0;
}
-- end of test-gcc.c --
then I compile test-gcc.c and try to link it with import library libtest-dll.a:
gcc -c -O2 -Wall -o test-gcc.o test-gcc.c
gcc -o test-gcc2 -Wl,--enable-stdcall-fixup test-gcc.o -L. -ltest-dll
test-gcc.o(.text+0x11):test-gcc.c: undefined reference to `MyCloseHandle AT 4'
collect2: ld returned 1 exit status
It seems that --enable-stdcall-fixup doesn't help. Why?
Replacing MyCloseHandle in test-dll.def by MyCloseHandle AT 4 makes linker happy.
By it is not the right fix.
Any suggestions?
Thanks in advance.
--
Dmitry.
--
Want to unsubscribe from this list?
Check out: http://cygwin.com/ml/#unsubscribe-simple
| webmaster | delorie software privacy |
| Copyright © 2019 by DJ Delorie | Updated Jul 2019 |