This is the mail archive of the
mailing list for the Cygwin project.
RE: undefined reference to `__imp___iob'
On Tue, 26 Jun 2007, Frederich, Eric P21322 wrote:
> > From: cygwin-owner@XXXXXX.XXX
> > [mailto:cygwin-owner@XXXXXX.XXX] On Behalf Of Brian Dessent
> > Sent: Tuesday, June 26, 2007 12:22 PM
> > To: cygwin@XXXXXX.XXX
> > Subject: Re: undefined reference to `__imp___iob'
> > "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
> Thanks for your reply.
> Does everything you say hold true even if I compile with the -mno-cygwin
Not everything, but how were we to know you were using -mno-cygwin?
> The program I was talking about linked to 4 libraries so I made a small
> main.c and just tried adding one library at a time. I wrote a small
> program to link against a single library and it worked. I was passing
> around FILE pointers and that worked okay too. From main.c I did the
> fopen and fclose and wrote to the file using the msys/mingw compiled
> library. Was I just lucky?
> When I tried adding in another library I got those errors again.
> Apparently I'm confused. I thought that when I compile with -mno-cygwin
> it was the same as using msys/mingw.
It is, unless you explicitly inlcude a Cygwin header. Please provide the
exact compiler invocation and the exact errors you get.
|\ _,,,---,,_ email@example.com | firstname.lastname@example.org
ZZZzz /,`.-'`' -. ;-;;,_ Igor Peshansky, Ph.D. (name changed!)
|,4- ) )-,_. ,\ ( `'-' old name: Igor Pechtchanski
'---''(_/--' `-'\_) fL a.k.a JaguaR-R-R-r-r-r-.-.-. Meow!
Freedom is just another word for "nothing left to lose"... -- Janis Joplin
Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple
Problem reports: http://cygwin.com/problems.html