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@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@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

Reply via email to