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 From: "Michael Olson" To: "Ed Bradford/Raleigh/IBM" Cc: Subject: RE: Linking in WSAGetLastError Date: Wed, 27 Sep 2000 10:12:47 -0400 Message-ID: MIME-Version: 1.0 Content-Type: text/plain; charset="US-ASCII" Content-Transfer-Encoding: 7bit X-Priority: 3 (Normal) X-MSMail-Priority: Normal X-Mailer: Microsoft Outlook IMO, Build 9.0.2416 (9.0.2911.0) Importance: Normal X-MimeOLE: Produced By Microsoft MimeOLE V5.50.4133.2400 In-Reply-To: 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