delorie.com/archives/browse.cgi | search |
Mailing-List: | contact cygwin-help AT cygwin DOT com; run by ezmlm |
List-Subscribe: | <mailto:cygwin-subscribe AT cygwin DOT com> |
List-Archive: | <http://sources.redhat.com/ml/cygwin/> |
List-Post: | <mailto:cygwin AT cygwin DOT com> |
List-Help: | <mailto:cygwin-help AT cygwin DOT com>, <http://sources.redhat.com/ml/#faqs> |
Sender: | cygwin-owner AT cygwin DOT com |
Mail-Followup-To: | cygwin AT cygwin DOT com |
Delivered-To: | mailing list cygwin AT cygwin DOT com |
Message-ID: | <3DC781BB.4010303@st.com> |
Date: | Tue, 05 Nov 2002 09:30:51 +0100 |
From: | Pavel Holejsovsky <pavel DOT holejsovsky AT st DOT com> |
User-Agent: | Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.2b) Gecko/20021016 |
X-Accept-Language: | en-us, en |
MIME-Version: | 1.0 |
To: | Matthew DOT Willis AT CIBC DOT ca |
Cc: | cygwin AT cygwin DOT com |
Subject: | Re: Q. on creating DLL's for use w/ excel (export names without @0, |
@ 4 etc?) (cygwin 1.3.13-2) | |
References: | <H000076f16fabeb2 DOT 1036483950 DOT eux100 DOT sgp DOT st DOT com AT MHS> |
In-Reply-To: | <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 DOT Willis AT CIBC DOT 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 AT 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 AT 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/
webmaster | delorie software privacy |
Copyright © 2019 by DJ Delorie | Updated Jul 2019 |