Mailing-List: contact cygwin-help AT sourceware DOT cygnus DOT com; run by ezmlm List-Subscribe: List-Archive: List-Post: List-Help: , Sender: cygwin-owner AT sources DOT redhat DOT com Delivered-To: mailing list cygwin AT sources DOT redhat DOT com Importance: Normal Subject: RE: Linking in WSAGetLastError To: "Michael Olson" Cc: X-Mailer: Lotus Notes Release 5.0.3 (Intl) 21 March 2000 Message-ID: From: "Ed Bradford/Raleigh/IBM" Date: Wed, 27 Sep 2000 11:53:46 -0400 X-MIMETrack: Serialize by Router on D04NMS90/04/M/IBM(Release 5.0.3 (Intl)|21 March 2000) at 09/27/2000 11:53:47 AM MIME-Version: 1.0 Content-type: text/plain; charset=us-ascii 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 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" on 09/27/2000 10:12:47 AM To: Ed Bradford/Raleigh/IBM AT IBMUS cc: 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 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 @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