X-Spam-Check-By: sourceware.org Message-ID: <46813D13.60EE664D@dessent.net> Date: Tue, 26 Jun 2007 09:21:39 -0700 From: Brian Dessent X-Mailer: Mozilla 4.79 [en] (Windows NT 5.0; U) MIME-Version: 1.0 To: cygwin AT cygwin DOT com Subject: Re: undefined reference to `__imp___iob' References: Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit X-IsSubscribed: yes Reply-To: cygwin AT cygwin DOT com Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: cygwin-owner AT cygwin DOT com Mail-Followup-To: cygwin AT cygwin DOT com Delivered-To: mailing list cygwin AT cygwin DOT com "Frederich, Eric P21322" wrote: > Are there any tips to compile compatible libraries with msys / cygwin? > Is it even possible? > Am I missing a gcc option? No, it's not possible. Cygwin libraries use the Cygwin runtime. MinGW/MSYS libraries use the Microsoft (MSVCRT) runtime. These are two inherently different and incompatible implementations of a C runtime, so you can't link a program that uses both and expect it to work. It is technically possible if you are very sure of what you're doing, but this would involve making sure that all C functions are resolved to the correct library. For example, printf() in the MinGW code must go to MSVCRT, printf() in the Cygwin code must go to cygwin1.dll. The only way I can think to do this is with LoadLibrary()/GetProcAddress() and function pointers for everything. It also would mean that no C library data structures could be passed between the two, such as file descriptors, FILE *, struct stat, etc. It would be an extremely inconvent way to write code, and it would be much easier and cleaner to just compile all code as Cygwin code or all code as native (MSVCRT) code. Brian -- 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/