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/

