Cygwin - linker errors - __assert, __itob and __ftol

Brian Dessent brian@dessent.net
Sat May 31 14:48:00 GMT 2008


C S wrote:

> gcc -D__int64="long long" -shared -I\C:\Apps\Java\jdk1.6.0_05\include
> -I\C:\Apps\Java\jdk1.6.0_05\include\win32 -I\c:\Users\usmsci\My
> Documents\shapefiles\shapelib128_bin_win -L\c:\Users\usmsci\My
> Documents\shapefiles\shapelib128_bin_win myFile.cpp -o
> libShapeData.dll c:\Users\usmsci\My
> Documents\shapefiles\shapelib128_bin_win\shpopen.obj
> c:\Users\usmsci\My
> Documents\shapefiles\shapelib128_bin_win\dbfopen.obj
> 
> the errors i get are:
> 
> Warning: .drectve '-defaultlib:LIBC' - unrecognized
> Warning: .drectve '-defaultlib:OLDNAMES' - unrecognized
> Warning: .drectve '-defaultlib:LIBC' - unrecognized
> Warning: .drectve '-defaultlib:OLDNAMES' - unrecognized
> 
> c:\Users\usmsci\My Documents\shapefiles\shapelib128_bin_win\shpopen.o:shpopen.c
> (.text+0x1485):undefined reference to __assert

You can't mix and match objects like that.  Those objects compiled by
MSVC expect to be linked with the MSVCRT runtime, and here you're trying
to link them against the Cygwin runtime.  That's the cause of the linker
errors.  You can't do that.  Every object needs to be consistent in the
runtime that it was compiled against.  So either you need to build
everything against MSVCRT (i.e. gcc -mno-cygwin or using MSVC) or you
need to build everything against Cygwin.  But you can't do some with one
and some the other.

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/



More information about the Cygwin mailing list