Linking VC++ apps to cygwin-based DLLs

Larry Hall cygwin-lh@cygwin.com
Fri Jan 23 16:46:00 GMT 2004


At 01:22 AM 1/23/2004, Brian Dessent you wrote:
>Tomer Zekharya wrote:
>
>> I want to port a certain group of libraries from UNIX to windows. I managed to compile and link it using cygwin, but the Windows applications that needs these libs are MFC based, so I can't compile them in cygwin (at least that's what I understood from searching through the web and through the cygwin mailing list).
>> I tried doing the opposite: compile the UNIX code to DLLs using cygwin, and trying to link to them in VC++, but I get all kind of errors.  After compiling the DLLs as described in the "Building DLLs" section in the Cygwin manual, I get the following message when linking in VC++:
>> 
>> warning LNK4078: multiple ".text" sections found with different attributes (E0000020)
>> 
>> And my application crashes on some kind of memory fault.
>> 
>> Since I'm new to this world of cygwin and VC++, I don't really know if I made a mistake in the cygwin side or the VC++ side. If anyone has successfully compiled MFC based applications linking against cygwin-based DLLs, I'll be more than happy to hear how he/she did it.
>
>
>THis is surely in the FAQ somewhere, which I'm sure gives a better
>answer than I can.
>
>A "Cygwin" application by definition is one that links against
>cygwin1.dll.  That is, it uses the Cygwin layer to provide a POSIX
>interface.  If you link against cygwin1.dll you cannot also link against
>another crt (C runtime) library, because the two conflict.  So, either
>you must modify your VC++ code to not use any of the VC++ libraries, or
>you must modify your Cygwin code so that it doesn't link against
>cygwin1.dll.  The latter is possible with the "-mno-cygwin" flag to gcc,
>which turns it into mingw.  Objects compiled that way will have no
>dependance on cygwin1.dll, but they will also have no support for the
>POSIX compatibility that Cygwin provides.  So, you can't have your cake
>and eat it too.  If you want the functionality that Cygwin provides, you
>must not use any other crt.


And you must interface to your DLLs as C-callable functions, not as C++ 
functions or classes.



--
Larry Hall                              http://www.rfk.com
RFK Partners, Inc.                      (508) 893-9779 - RFK Office
838 Washington Street                   (508) 893-9889 - FAX
Holliston, MA 01746                     


--
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple
Problem reports:       http://cygwin.com/problems.html
Documentation:         http://cygwin.com/docs.html
FAQ:                   http://cygwin.com/faq/



More information about the Cygwin mailing list