Mail Archives: cygwin/2000/09/27/11:55:43
Not quite. I am running a "newer" version of Windows -- one you will be
able to get in October or so. I want
to build interface libraries for some of the DLL's for which Microsoft has
not yet delivered
the .lib files. Working through the document you mentioned below, there
seems to be some missing information.
========mandel_dll.c===========================================
#include <windows.h>
int mandel(double a, double b, double c, double d, int e)
{
int i;
double x,y,x1,y1;
x = a;
y = b;
for(i = 0; i < e; i++) {
x1 = x*x + y*y;
y1 = -2 * x * y;
if( (x1*x1 + y1*y1) > 1.0)
break;
x = x1 + c;
y = y1 + d;
}
return i;
}
int WINAPI
mandel_init(HANDLE h, DWORD reason, void *foo) {
return 1;
}
===============================================================
This is a simple one function dll.
gcc -c mandel_dll.c
gcc -s -Wl,--base-file,mandel_dll.base -o mandel_dll.dll mandel_dll.o
-Wl,-e,_mandel_init AT 12
produces the following on my Win2K SP1 system:
/usr/lib/libcygwin.a(libcmain.o)(.text+0x6a):libcmain.c: undefined
reference to
`WinMain AT 16'
collect2: ld returned 1 exit status
~/src/cyg $
I'm not sure what is going on here. I try this to understand how dll's are
made with gcc/dlltool.
Sorry to be so obtuse. (See you in Zihuatanejo.)
Ed
Your Windows 2000 Arborist
T/L 589-4410; Outside: 1-919-993-4410
egb AT us DOT ibm DOT com
"Michael Olson" <olson AT cs DOT odu DOT edu> on 09/27/2000 10:12:47 AM
To: Ed Bradford/Raleigh/IBM AT IBMUS
cc: <cygwin AT sourceware DOT cygnus DOT com>
Subject: RE: Linking in WSAGetLastError
To link with a DLL (Like user32.dll) you need an import library which is
what -luser32
is linking your program to. Doc's on how to build dll's and import
libraries
are here
http://sources.redhat.com/cygwin/cygwin-ug-net/dll.html
Is that what you were looking for?
-- Mike
----------------
Michael Olson
olson AT cs DOT odu DOT edu
----------------
-----Original Message-----
From: cygwin-owner AT sources DOT redhat DOT com
[mailto:cygwin-owner AT sources DOT redhat DOT com]On Behalf Of Ed
Bradford/Raleigh/IBM
Sent: Wednesday, September 27, 2000 9:43 AM
To: DJ Delorie
Cc: cygwin AT sourceware DOT cygnus DOT com
Subject: Re: Linking in WSAGetLastError
I'm missing something here. If the CYGWIN libraries don't export functions
(aren't current with MS API's) then
you simply can't use the function. At least that's what I thought. After a
few simple experiments, I find that I might be wrong. Is there something
written somewhere that describes the relationship between
gcc msg.c
and the Microsoft libraries? For instance, using gcc -v I see no references
to the mssdk libraries. Is that
because there isn't any? Here is my simple "msg.c" program:
#include <windows.h>
int main(int ac, char *av[])
{
MessageBox(NULL, "Messsage", "Title", MB_OK);
return 0;
}
It compiles with either
cl msg.c user32.lib -o msg-cl.exe
or
gcc msg.c -o msg-gcc
Both compile, link and execute properly. More precisely,
gcc -c msg.c
ld -Bdynamic /lib/crt0.o msg.o -L/usr/lib/gcc-lib/i686-pc-cygwin/2.95.2
-luser32 -lcygwin -lkernel32
produces a correctly working executable. Here, all the "-l" things refer to
/lib/libXXX.a modules. Substituting
//e/mssdk/lib/user32.lib for the "-luser" in the ld line, results in an
undefined reference to MessageBoxA
which is what I would expect.
As you can see, I am a bit confused. Any pointers to writeups on how all
the gcc libraries and
Windows libraries fit together would be greately appreciated. Also, I
wouldn't mind writing some of this
up once I understand it.
Thank you
Ed Bradford
Your Windows 2000 Arborist
T/L 589-4410; Outside: 1-919-993-4410
egb AT us DOT ibm DOT com
DJ Delorie <dj AT delorie DOT com>@sources.redhat.com on 09/26/2000 09:33:12 PM
Sent by: cygwin-owner AT sources DOT redhat DOT com
To: olson AT cs DOT odu DOT edu
cc: cygwin AT sourceware DOT cygnus DOT com
Subject: Re: Linking in WSAGetLastError
> conf.o(.text+0x2c74):conf.c: undefined reference to `WSAGetLastError'
They don't export WGAGetLastError. They export WSAGetLastError AT 0.
This means that you aren't including the proper headers (winsock.h),
and it's defaulting to cdecl instead of stdcall (WINAPI) calling
conventions.
--
Want to unsubscribe from this list?
Send a message to cygwin-unsubscribe AT sourceware DOT cygnus DOT com
--
Want to unsubscribe from this list?
Send a message to cygwin-unsubscribe AT sourceware DOT cygnus DOT com
--
Want to unsubscribe from this list?
Send a message to cygwin-unsubscribe AT sourceware DOT cygnus DOT com
- Raw text -