Cygwin - linker errors - __assert, __itob and __ftol

C S usmgoldeneagle@gmail.com
Tue Jun 3 13:25:00 GMT 2008


Brian,

 i figured out that not only do i need to compile against the
no-cygwin flag but also link to it as well. so i tried to add the -Wl
option like this:

g++ -mno-cygwin -D__int64="long long" -W1-mno-cygwin -shared -I
"C:\Apps\Java\jdk1.6.0_05\include" -I
"C:\Apps\Java\jdk1.6.0_05\include\win32" -I "C:\Users\me\My
Documents\shapefiles\shapelib-1.2.10\shapelib-1.2.10" -I
"C:\Users\me\My Documents\shapefiles\shapelib128_bin_win" -L
"C:\Users\me\My Documents\shapefiles\shapelib128_bin_win" myFile.cpp
-o libShapeData.dll "C:\Users\me\My
Documents\shapefiles\shapelib128_bin_win\shpopen.obj" "C:\Users\me\My
Documents\shapefiles\shapelib128_bin_win\dbfopen.obj"

the error i get now is:

/usr/lib/gcc/i686-pc-mingw32/3.4.4../../../../i686-pc-mingw32/bin/ld:
unrecognized emulation mode: no-cygwin
Supported Emulations: i386pe
collect2: ld returned exit status

at the prompt i did a ls /lib/gcc/i686-pc-mingw32 and it returned
3.4.4 so that seems right.

any clues or suggestions?? thanks all in advance!

On Sat, May 31, 2008 at 6:26 AM, Brian Dessent <brian@dessent.net> wrote:
> 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