2008.04.25 16:52 "[Tiff] linker problem", by Vinay Ramdas

2008.04.25 17:48 "Re: [Tiff] linker problem", by Frank Warmerdam

I am trying to build a dll using libtiff. My sources file has the following entry

TARGETLIBS= $(TARGETLIBS) \
                $(SDK_LIB_PATH)\libtiff_i.lib \

When i try to build i get the following errors

error LNK2019: unresolved external symbol __TIFFfree@4 referenced in function _save_to_tif@4

error LNK2019: unresolved external symbol _TIFFWriteScanline@16 referenced in function _save_to_tif@4

error LNK2019: unresolved external symbol _TIFFDefaultStripSize@8 referenced in function _save_to_tif@4

error LNK2019: unresolved external symbol __TIFFmalloc@4 referenced in function _save_to_tif@4

error LNK2019: unresolved external symbol _TIFFScanlineSize@4 referenced in function _save_to_tif@4

error LNK2019: unresolved external symbol _TIFFOpen@8 referenced in function _save_to_tif@4

dumpbin.exe /exports C:\libtiff_i.lib gives me ( I am pasting only output related to the above functions )

 _TIFFSetField
 _TIFFOpen
 _TIFFDefaultStripSize
 _TIFFScanlineSize
_TIFFWriteScanline
 __TIFFFree
 __TIFFmalloc

Interestingly, I have also used the function TIFFSetField in the function save_to_tif and that does not come up in the linker error. Any ideas what the problem could be? Please help.

Vinay,

Is there any change you compiled your project to use stdcall instead of cdecl calling conventions? The @4, @16 etc decorations in the unresolved symbols indicates the linker was looking for stdcall style functions while libtiff is normally compiled with the default cdecl calling convention which does not include the extra decorations.

It looks like /Gz is the VC++ switch that turns on stdcall conventions. You want to either avoid it in your project, or rebuild libtiff to include it.

Best regards,
--
---------------------------------------+--------------------------------------

I set the clouds in motion - turn up   | Frank Warmerdam, warmerdam@pobox.com
light and sound - activate the windows | http://pobox.com/~warmerdam

and watch the world go round - Rush    | President OSGeo, http://osgeo.org