Subject: Re: Creating a dll problem.
From: [email-masked] (Mikey)

17 Nov 1997 01:42:43 -0800
Message-ID: <[email-masked]>
References: <[email-masked]>
Reply-To: [email-masked]
Mime-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
To: Ian Collins <[email-masked]>, [email-masked]

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
>"[email-masked]" with one line of text: "help".
>

([email-masked])
delete REMOVETHIS from the above to reply
         Mikey
-
For help on using this list (especially unsubscribing), send a message to
"[email-masked]" with one line of text: "help".