This is the mail archive of the
cygwin@cygwin.com
mailing list for the Cygwin project.
Re: Q. on creating DLL's for use w/ excel (export names without @0,@ 4 etc?) (cygwin 1.3.13-2)
- From: Pavel Holejsovsky <pavel dot holejsovsky at st dot com>
- To: Matthew dot Willis at CIBC dot ca
- Cc: cygwin at cygwin dot com
- Date: Tue, 05 Nov 2002 09:30:51 +0100
- Subject: Re: Q. on creating DLL's for use w/ excel (export names without @0,@ 4 etc?) (cygwin 1.3.13-2)
- References: <H000076f16fabeb2.1036483950.eux100.sgp.st.com@MHS>
Matthew,
1. you can try ld's option --kill-at. The link cmdline would look like this:
gcc -Wl,--kill-at -Wl,--out-implib,libfoo.import.a -mno-cygwin -shared
-o foo.dll foo.o
2. you can create .def file foo.def containing list of exported symbols
without @NN suffix (one symbol per line). Then add .def file to your
link commandline (be sure that it actually precedes all .o files).
See ld docs for more details about both approaches.
Pavel
Matthew.Willis@CIBC.ca wrote:
I've searched on google for some references to interfacing cygwin with
win32
dll's. I've made a little progress but am kind of stuck creating DLL's
inside cygwin. The method I am using is the following:
/* foo.c */
#include
int WINAPI foobar() { return 1234; }
gcc -mno-cygwin foo.c -c
gcc -Wl,--out-implib,libfoo.import.a -mno-cygwin -shared -o foo.dll foo.o
When I look at the DLL file with MSVC's "depends.exe" I see the symbol is
"foobar@0" -- and I guess the @0 refers to how many bytes the function
args
take (I get @4 with a pointer to double, etc.). The only way I can
make the
symbols available to excel's visual basic interface is to cheat and
hexedit
foo.dll to change "foobar@0" to "foobarX0". Then I can put a few lines
in my
excel modules like
Declare Function foobarX0 Lib "e:\dlltest\foo.dll" () As Integer
Function MattVersion()
Dim i As Integer
i = foobarX0()
MattVersion = "MW 0.0.1.0.1." + Str(i)
End Function
Surely there is a better way. Can anyone suggest a better technique?
--
Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple
Bug reporting: http://cygwin.com/bugs.html
Documentation: http://cygwin.com/docs.html
FAQ: http://cygwin.com/faq/
--
Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple
Bug reporting: http://cygwin.com/bugs.html
Documentation: http://cygwin.com/docs.html
FAQ: http://cygwin.com/faq/