This is the mail archive of the
cygwin@sourceware.cygnus.com
mailing list for the Cygwin project.
Re: Creating a dll problem.
- To: Ian Collins <Ian at kiwiplan dot co dot nz>, gnu-win32 at cygnus dot com
- Subject: Re: Creating a dll problem.
- From: jeffdbREMOVETHIS at netzone dot com (Mikey)
- Date: Mon, 17 Nov 1997 09:21:52 GMT
- Organization: Never
- References: <07551A47EAD6D01186430060B025C6F41B6F39@ntserver.kiwiplan2.co.nz>
- Reply-To: jeffdbREMOVETHIS at netzone dot com
If anyone has corrections to the following please post.
B19 should make fixup.o unnecessary!! whenever it gets here ;^)
>dlltool --def mylib.def --output-exp mylib.exp --dllname mylib.dll
should add -k to the above line. (-mrtd invalidates this?)
must fix all prototypes for libcygwin.a functions with __cdecl to use -mrtd
-mrtd is only useful on the compile line, not the link line.
gcc -Wl,--subsystem,windows,--dll,-e,DllMain -o mylib.dll fixup.o libXXX etc..
^^
and include fixup.o in the link
----------- cut here -------------
#ifdef __CYGWIN32__
/*
* This section terminates the list of dll imports under cygwin32.
* do !!!NOT!!! use this generated .o file with mingw32, it is already
* included in the startup files.
* main is included to make it possible to link your dll with
* -lcygwin, which as far as I can tell you MUST do if your .exe
* links with it.
* you could also include this under *startfile: in cygwin32 specs, as
*startfile:
crt0%O%s %{dll:fixup%O%s}
for use with the -dll gcc command line switch
you may also want to use
*link:
%{windows:--subsystem windows} %{console:--subsystem console} %{dll:--dll -e _dll_entry@12}}
^^ or whatever your DllMain is named
* do NOT insert or delete any lines.
* If you do not include this then you will have problems
* when linking with DLLs.
*/
asm (".section .idata$3\n" ".long 0,0,0,0,0,0,0,0");
int main(){ return 0; }
#endif
----------- end cut here -------------
On Mon, 17 Nov 1997 16:10:25 +1300, you wrote:
>I have a number of C libraries that I want to make into a dll that can
>be callable from VB5.
>I created a DEF file called mylib.def
>
>I ran dlltool as follows,
>
>dlltool --def mylib.def --output-exp mylib.exp --dllname mylib.dll
>
>I then tried to create the mylib.dll using,
>
>gcc -o mylib.dll libmy1.a libmy2.a -dll -mrtd
>
>I then get the error,
>
>e:\b18\H-i386-cygwin32\lib\gcc-lib\i386-cygwin32\cygnus-2.7.2-970404\../
>../../../i386-cygwin32\lib/libcygwin.a(libcmain.o)(.text+0x54):libcmain.
>cc: undefined reference to `WinMain@16'
>
>What am I doing wrong (or even right)?
>
>The libmy1.a and libmy2.a are simple C modules performing normal C
>processing. (I have even performed the above with a couple of dummy
>modules that just add a number).
>
>Ian Collins.
>KIWIPLAN NZ.
>
>
>-
>For help on using this list (especially unsubscribing), send a message to
>"gnu-win32-request@cygnus.com" with one line of text: "help".
>
(jeffdbREMOVETHIS@netzone.com)
delete REMOVETHIS from the above to reply
Mikey
-
For help on using this list (especially unsubscribing), send a message to
"gnu-win32-request@cygnus.com" with one line of text: "help".