1999.10.23 12:01 "LIBTIFF support for Windows", by Jan Nijtmans

1999.10.23 12:03 "LIBTIFF support for Windows (+ attachement)", by Jan Nijtmans

Oops, forgot the attachment. Here it is again.

================================================

Would the following patch make any chance to be included in libtiff-3.5.3?

Rationale: In order to produce a Windows dll, VC++ (and currently Borland and gcc as well) support the "__declspec(dllexport)" tag to specify which symbols should be exported. It would make my life (and I'm sure a lot others) much easier for me if libtiff included this in the header files.

The implementation in this patch is identical to the implementation in zlib-1.1.3. This library has Windows support since ages.

If someone is interested in the Makefiles for VC++ (4.x, 5.0, 6.0) or gcc-2.95 (mingw or cygwin variant), I can supply those as well. I successfully compiled libtiff with VC++ 5.0 and gcc-2.95-mingw, so if someone is interested in those dll's, I can supply them as well.

Regards,

Jan Nijtmans, CMG Arnhem B.V.
email: Jan.Nijtmans@wxs.nl (private)
       Jan.Nijtmans@cmg.nl (work)
url:   http://home.wxs.nl/~nijtmans/

*** tif_dir.h.orig      Tue Jul 27 23:50:27 1999
--- tif_dir.h   Sat Oct 16 17:22:00 1999
***************
*** 240,251 ****
  #if defined(__cplusplus)
  extern "C" {
  #endif
! extern void _TIFFSetupFieldInfo(TIFF*);
! extern        void _TIFFMergeFieldInfo(TIFF*, const TIFFFieldInfo[], int);
! extern    void _TIFFPrintFieldInfo(TIFF*, FILE*);
! extern const TIFFFieldInfo* _TIFFFindFieldInfo(TIFF*, ttag_t, TIFFDataType);
! extern   const TIFFFieldInfo* _TIFFFieldWithTag(TIFF*, ttag_t);
! extern  TIFFDataType _TIFFSampleToTagType(TIFF*);
  #if defined(__cplusplus)
  }
  #endif
--- 240,251 ----
  #if defined(__cplusplus)
  extern "C" {
  #endif
! extern  EXPORT(void,_TIFFSetupFieldInfo) (TIFF*);
! extern       EXPORT(void,_TIFFMergeFieldInfo) (TIFF*, const TIFFFieldInfo[], int);
! extern   EXPORT(void,_TIFFPrintFieldInfo) (TIFF*, FILE*);
! extern        EXPORT(const TIFFFieldInfo*,_TIFFFindFieldInfo) (TIFF*, ttag_t, TIFFDataType);
! extern  EXPORT(const TIFFFieldInfo*,_TIFFFieldWithTag) (TIFF*, ttag_t);
! extern EXPORT(TIFFDataType,_TIFFSampleToTagType) (TIFF*);
  #if defined(__cplusplus)
  }
  #endif
*** tif_predict.h.orig   Tue Jul 27 23:50:27 1999
--- tif_predict.h       Sat Oct 16 17:22:00 1999
***************
*** 54,60 ****
  #if defined(__cplusplus)
  extern "C" {
  #endif
! extern   int TIFFPredictorInit(TIFF*);
  #if defined(__cplusplus)
  }
  #endif
--- 54,60 ----
  #if defined(__cplusplus)
  extern "C" {
  #endif
! extern        EXPORT(int,TIFFPredictorInit) (TIFF*);
  #if defined(__cplusplus)
  }
  #endif
*** tif_zip.c.orig   Tue Jul 27 23:50:27 1999
--- tif_zip.c   Sat Oct 16 17:22:00 1999
***************
*** 47,52 ****
--- 47,54 ----
   * last found at ftp://ftp.uu.net/pub/archiving/zip/zlib/zlib-0.99.tar.gz.
   */
  #include "tif_predict.h"
+
+ #undef EXPORT
  #include "zlib.h"

  #include <stdio.h>
*** tiff.h.orig  Wed Sep  8 11:39:00 1999
--- tiff.h      Sat Oct 16 17:22:00 1999
***************
*** 77,82 ****
--- 77,100 ----
    TIS_EMPTY
  };

+ /* Compile with -DTIFF_DLL for Windows DLL support */
+ #if (defined(_WINDOWS) || defined(WINDOWS) || defined(__WIN32__)) && defined(TIFF_DLL)
+ #  define WIN32_LEAN_AND_MEAN
+ #  include <windows.h>
+ #  undef WIN32_LEAN_AND_MEAN
+ #  if defined(_MSC_VER)
+ #    define EXPORT(a,b) __declspec(dllexport) a b
+ #  else
+ #    if defined(__BORLANDC__)
+ #      define EXPORT(a,b) a _export b
+ #    endif
+ #  endif
+ #endif
+
+ #if !defined(EXPORT)
+ #  define EXPORT(a,b) a b
+ #endif
+
  typedef        struct {
        uint16  tiff_magic;     /* magic number (defines byte order) */
         uint16  tiff_version;   /* TIFF version number */
*** tiffio.h.orig      Sat Oct 16 17:22:57 1999
--- tiffio.h    Sat Oct 16 17:30:28 1999
***************
*** 207,323 ****
  typedef        void (*TIFFUnmapFileProc)(thandle_t, tdata_t, toff_t);
  typedef void (*TIFFExtendProc)(TIFF*);

! extern        const char* TIFFGetVersion(void);

! extern     const TIFFCodec* TIFFFindCODEC(uint16);
! extern TIFFCodec* TIFFRegisterCODEC(uint16, const char*, TIFFInitMethod);
! extern      void TIFFUnRegisterCODEC(TIFFCodec*);

! extern tdata_t _TIFFmalloc(tsize_t);
! extern   tdata_t _TIFFrealloc(tdata_t, tsize_t);
! extern void _TIFFmemset(tdata_t, int, tsize_t);
! extern        void _TIFFmemcpy(tdata_t, const tdata_t, tsize_t);
! extern      int _TIFFmemcmp(const tdata_t, const tdata_t, tsize_t);
! extern void _TIFFfree(tdata_t);

! extern      void TIFFClose(TIFF*);
! extern  int TIFFFlush(TIFF*);
! extern   int TIFFFlushData(TIFF*);
! extern       int TIFFGetField(TIFF*, ttag_t, ...);
! extern   int TIFFVGetField(TIFF*, ttag_t, va_list);
! extern      int TIFFGetFieldDefaulted(TIFF*, ttag_t, ...);
! extern  int TIFFVGetFieldDefaulted(TIFF*, ttag_t, va_list);
! extern     int TIFFReadDirectory(TIFF*);
! extern   tsize_t TIFFScanlineSize(TIFF*);
! extern        tsize_t TIFFRasterScanlineSize(TIFF*);
! extern  tsize_t TIFFStripSize(TIFF*);
! extern   tsize_t TIFFVStripSize(TIFF*, uint32);
! extern  tsize_t TIFFTileRowSize(TIFF*);
! extern tsize_t TIFFTileSize(TIFF*);
! extern    tsize_t TIFFVTileSize(TIFF*, uint32);
! extern   uint32 TIFFDefaultStripSize(TIFF*, uint32);
! extern     void TIFFDefaultTileSize(TIFF*, uint32*, uint32*);
! extern      int TIFFFileno(TIFF*);
! extern  int TIFFGetMode(TIFF*);
! extern int TIFFIsTiled(TIFF*);
! extern int TIFFIsByteSwapped(TIFF*);
! extern   int TIFFIsUpSampled(TIFF*);
! extern     int TIFFIsMSB2LSB(TIFF*);
! extern       uint32 TIFFCurrentRow(TIFF*);
! extern   tdir_t TIFFCurrentDirectory(TIFF*);
! extern     tdir_t TIFFNumberOfDirectories(TIFF*);
! extern  uint32 TIFFCurrentDirOffset(TIFF*);
! extern     tstrip_t TIFFCurrentStrip(TIFF*);
! extern       ttile_t TIFFCurrentTile(TIFF*);
! extern int TIFFReadBufferSetup(TIFF*, tdata_t, tsize_t);
! extern       int TIFFWriteBufferSetup(TIFF*, tdata_t, tsize_t);
! extern      int TIFFLastDirectory(TIFF*);
! extern   int TIFFSetDirectory(TIFF*, tdir_t);
! extern    int TIFFSetSubDirectory(TIFF*, uint32);
! extern int TIFFUnlinkDirectory(TIFF*, tdir_t);
! extern int TIFFSetField(TIFF*, ttag_t, ...);
! extern   int TIFFVSetField(TIFF*, ttag_t, va_list);
! extern      int TIFFWriteDirectory(TIFF *);
! extern int TIFFReassignTagToIgnore(enum TIFFIgnoreSense, int);

  #if defined(c_plusplus) || defined(__cplusplus)
! extern      void TIFFPrintDirectory(TIFF*, FILE*, long = 0);
! extern        int TIFFReadScanline(TIFF*, tdata_t, uint32, tsample_t = 0);
! extern    int TIFFWriteScanline(TIFF*, tdata_t, uint32, tsample_t = 0);
! extern   int TIFFReadRGBAImage(TIFF*, uint32, uint32, uint32*, int = 0);
  #else
! extern  void TIFFPrintDirectory(TIFF*, FILE*, long);
! extern    int TIFFReadScanline(TIFF*, tdata_t, uint32, tsample_t);
! extern        int TIFFWriteScanline(TIFF*, tdata_t, uint32, tsample_t);
! extern       int TIFFReadRGBAImage(TIFF*, uint32, uint32, uint32*, int);
  #endif

! extern   int TIFFReadRGBAStrip(TIFF*, tstrip_t, uint32 * );
! extern      int TIFFReadRGBATile(TIFF*, uint32, uint32, uint32 * );
! extern int TIFFRGBAImageOK(TIFF*, char [1024]);
! extern        int TIFFRGBAImageBegin(TIFFRGBAImage*, TIFF*, int, char [1024]);
! extern        int TIFFRGBAImageGet(TIFFRGBAImage*, uint32*, uint32, uint32);
! extern  void TIFFRGBAImageEnd(TIFFRGBAImage*);
! extern  TIFF* TIFFOpen(const char*, const char*);
! extern       TIFF* TIFFFdOpen(int, const char*, const char*);
! extern        TIFF* TIFFClientOpen(const char*, const char*,
              thandle_t,
              TIFFReadWriteProc, TIFFReadWriteProc,
           TIFFSeekProc, TIFFCloseProc,
            TIFFSizeProc,
           TIFFMapFileProc, TIFFUnmapFileProc);
! extern        const char* TIFFFileName(TIFF*);
! extern        void TIFFError(const char*, const char*, ...);
! extern  void TIFFWarning(const char*, const char*, ...);
! extern        TIFFErrorHandler TIFFSetErrorHandler(TIFFErrorHandler);
! extern TIFFErrorHandler TIFFSetWarningHandler(TIFFErrorHandler);
! extern       TIFFExtendProc TIFFSetTagExtender(TIFFExtendProc);
! extern      ttile_t TIFFComputeTile(TIFF*, uint32, uint32, uint32, tsample_t);
! extern      int TIFFCheckTile(TIFF*, uint32, uint32, uint32, tsample_t);
! extern    ttile_t TIFFNumberOfTiles(TIFF*);
! extern       tsize_t TIFFReadTile(TIFF*,
         tdata_t, uint32, uint32, uint32, tsample_t);
! extern        tsize_t TIFFWriteTile(TIFF*,
        tdata_t, uint32, uint32, uint32, tsample_t);
! extern        tstrip_t TIFFComputeStrip(TIFF*, uint32, tsample_t);
! extern    tstrip_t TIFFNumberOfStrips(TIFF*);
! extern     tsize_t TIFFReadEncodedStrip(TIFF*, tstrip_t, tdata_t, tsize_t);
! extern        tsize_t TIFFReadRawStrip(TIFF*, tstrip_t, tdata_t, tsize_t);
! extern    tsize_t TIFFReadEncodedTile(TIFF*, ttile_t, tdata_t, tsize_t);
! extern  tsize_t TIFFReadRawTile(TIFF*, ttile_t, tdata_t, tsize_t);
! extern      tsize_t TIFFWriteEncodedStrip(TIFF*, tstrip_t, tdata_t, tsize_t);
! extern       tsize_t TIFFWriteRawStrip(TIFF*, tstrip_t, tdata_t, tsize_t);
! extern   tsize_t TIFFWriteEncodedTile(TIFF*, ttile_t, tdata_t, tsize_t);
! extern tsize_t TIFFWriteRawTile(TIFF*, ttile_t, tdata_t, tsize_t);
! extern     void TIFFSetWriteOffset(TIFF*, toff_t);
! extern void TIFFSwabShort(uint16*);
! extern    void TIFFSwabLong(uint32*);
! extern     void TIFFSwabDouble(double*);
! extern   void TIFFSwabArrayOfShort(uint16*, unsigned long);
! extern      void TIFFSwabArrayOfLong(uint32*, unsigned long);
! extern       void TIFFSwabArrayOfDouble(double*, unsigned long);
! extern     void TIFFReverseBits(unsigned char *, unsigned long);
! extern   const unsigned char* TIFFGetBitRevTable(int);
  #if defined(__cplusplus)
  }
  #endif
--- 207,323 ----
  typedef     void (*TIFFUnmapFileProc)(thandle_t, tdata_t, toff_t);
  typedef void (*TIFFExtendProc)(TIFF*);

! extern        EXPORT(const char*,TIFFGetVersion) (void);

! extern    EXPORT(const TIFFCodec*,TIFFFindCODEC) (uint16);
! extern        EXPORT(TIFFCodec*,TIFFRegisterCODEC) (uint16, const char*, TIFFInitMethod);
! extern     EXPORT(void,TIFFUnRegisterCODEC) (TIFFCodec*);

! extern        EXPORT(tdata_t,_TIFFmalloc) (tsize_t);
! extern  EXPORT(tdata_t,_TIFFrealloc) (tdata_t, tsize_t);
! extern        EXPORT(void,_TIFFmemset) (tdata_t, int, tsize_t);
! extern       EXPORT(void,_TIFFmemcpy) (tdata_t, const tdata_t, tsize_t);
! extern     EXPORT(int,_TIFFmemcmp) (const tdata_t, const tdata_t, tsize_t);
! extern        EXPORT(void,_TIFFfree) (tdata_t);

! extern     EXPORT(void,TIFFClose) (TIFF*);
! extern EXPORT(int,TIFFFlush) (TIFF*);
! extern  EXPORT(int,TIFFFlushData) (TIFF*);
! extern      EXPORT(int,TIFFGetField) (TIFF*, ttag_t, ...);
! extern  EXPORT(int,TIFFVGetField) (TIFF*, ttag_t, va_list);
! extern     EXPORT(int,TIFFGetFieldDefaulted) (TIFF*, ttag_t, ...);
! extern EXPORT(int,TIFFVGetFieldDefaulted) (TIFF*, ttag_t, va_list);
! extern    EXPORT(int,TIFFReadDirectory) (TIFF*);
! extern  EXPORT(tsize_t,TIFFScanlineSize) (TIFF*);
! extern       EXPORT(tsize_t,TIFFRasterScanlineSize) (TIFF*);
! extern EXPORT(tsize_t,TIFFStripSize) (TIFF*);
! extern  EXPORT(tsize_t,TIFFVStripSize) (TIFF*, uint32);
! extern EXPORT(tsize_t,TIFFTileRowSize) (TIFF*);
! extern        EXPORT(tsize_t,TIFFTileSize) (TIFF*);
! extern   EXPORT(tsize_t,TIFFVTileSize) (TIFF*, uint32);
! extern  EXPORT(uint32,TIFFDefaultStripSize) (TIFF*, uint32);
! extern    EXPORT(void,TIFFDefaultTileSize) (TIFF*, uint32*, uint32*);
! extern     EXPORT(int,TIFFFileno) (TIFF*);
! extern EXPORT(int,TIFFGetMode) (TIFF*);
! extern        EXPORT(int,TIFFIsTiled) (TIFF*);
! extern        EXPORT(int,TIFFIsByteSwapped) (TIFF*);
! extern  EXPORT(int,TIFFIsUpSampled) (TIFF*);
! extern    EXPORT(int,TIFFIsMSB2LSB) (TIFF*);
! extern      EXPORT(uint32,TIFFCurrentRow) (TIFF*);
! extern  EXPORT(tdir_t,TIFFCurrentDirectory) (TIFF*);
! extern    EXPORT(tdir_t,TIFFNumberOfDirectories) (TIFF*);
! extern EXPORT(uint32,TIFFCurrentDirOffset) (TIFF*);
! extern    EXPORT(tstrip_t,TIFFCurrentStrip) (TIFF*);
! extern      EXPORT(ttile_t,TIFFCurrentTile) (TIFF*);
! extern        EXPORT(int,TIFFReadBufferSetup) (TIFF*, tdata_t, tsize_t);
! extern      EXPORT(int,TIFFWriteBufferSetup) (TIFF*, tdata_t, tsize_t);
! extern     EXPORT(int,TIFFLastDirectory) (TIFF*);
! extern  EXPORT(int,TIFFSetDirectory) (TIFF*, tdir_t);
! extern   EXPORT(int,TIFFSetSubDirectory) (TIFF*, uint32);
! extern        EXPORT(int,TIFFUnlinkDirectory) (TIFF*, tdir_t);
! extern        EXPORT(int,TIFFSetField) (TIFF*, ttag_t, ...);
! extern  EXPORT(int,TIFFVSetField) (TIFF*, ttag_t, va_list);
! extern     EXPORT(int,TIFFWriteDirectory) (TIFF *);
! extern        EXPORT(int,TIFFReassignTagToIgnore) (enum TIFFIgnoreSense, int);

  #if defined(c_plusplus) || defined(__cplusplus)
! extern     EXPORT(void,TIFFPrintDirectory) (TIFF*, FILE*, long = 0);
! extern       EXPORT(int,TIFFReadScanline) (TIFF*, tdata_t, uint32, tsample_t = 0);
! extern   EXPORT(int,TIFFWriteScanline) (TIFF*, tdata_t, uint32, tsample_t = 0);
! extern  EXPORT(int,TIFFReadRGBAImage) (TIFF*, uint32, uint32, uint32*, int = 0);
  #else
! extern EXPORT(void,TIFFPrintDirectory) (TIFF*, FILE*, long);
! extern   EXPORT(int,TIFFReadScanline) (TIFF*, tdata_t, uint32, tsample_t);
! extern       EXPORT(int,TIFFWriteScanline) (TIFF*, tdata_t, uint32, tsample_t);
! extern      EXPORT(int,TIFFReadRGBAImage) (TIFF*, uint32, uint32, uint32*, int);
  #endif

! extern  EXPORT(int,TIFFReadRGBAStrip) (TIFF*, tstrip_t, uint32 * );
! extern     EXPORT(int,TIFFReadRGBATile) (TIFF*, uint32, uint32, uint32 * );
! extern        EXPORT(int,TIFFRGBAImageOK) (TIFF*, char [1024]);
! extern       EXPORT(int,TIFFRGBAImageBegin) (TIFFRGBAImage*, TIFF*, int, char [1024]);
! extern       EXPORT(int,TIFFRGBAImageGet) (TIFFRGBAImage*, uint32*, uint32, uint32);
! extern EXPORT(void,TIFFRGBAImageEnd) (TIFFRGBAImage*);
! extern EXPORT(TIFF*,TIFFOpen) (const char*, const char*);
! extern      EXPORT(TIFF*,TIFFFdOpen) (int, const char*, const char*);
! extern       EXPORT(TIFF*,TIFFClientOpen) (const char*, const char*,
             thandle_t,
              TIFFReadWriteProc, TIFFReadWriteProc,
           TIFFSeekProc, TIFFCloseProc,
            TIFFSizeProc,
           TIFFMapFileProc, TIFFUnmapFileProc);
! extern        EXPORT(const char*,TIFFFileName) (TIFF*);
! extern       EXPORT(void,TIFFError) (const char*, const char*, ...);
! extern EXPORT(void,TIFFWarning) (const char*, const char*, ...);
! extern       EXPORT(TIFFErrorHandler,TIFFSetErrorHandler) (TIFFErrorHandler);
! extern        EXPORT(TIFFErrorHandler,TIFFSetWarningHandler) (TIFFErrorHandler);
! extern      EXPORT(TIFFExtendProc,TIFFSetTagExtender) (TIFFExtendProc);
! extern     EXPORT(ttile_t,TIFFComputeTile) (TIFF*, uint32, uint32, uint32, tsample_t);
! extern     EXPORT(int,TIFFCheckTile) (TIFF*, uint32, uint32, uint32, tsample_t);
! extern   EXPORT(ttile_t,TIFFNumberOfTiles) (TIFF*);
! extern      EXPORT(tsize_t,TIFFReadTile) (TIFF*,
        tdata_t, uint32, uint32, uint32, tsample_t);
! extern        EXPORT(tsize_t,TIFFWriteTile) (TIFF*,
       tdata_t, uint32, uint32, uint32, tsample_t);
! extern        EXPORT(tstrip_t,TIFFComputeStrip) (TIFF*, uint32, tsample_t);
! extern   EXPORT(tstrip_t,TIFFNumberOfStrips) (TIFF*);
! extern    EXPORT(tsize_t,TIFFReadEncodedStrip) (TIFF*, tstrip_t, tdata_t, tsize_t);
! extern       EXPORT(tsize_t,TIFFReadRawStrip) (TIFF*, tstrip_t, tdata_t, tsize_t);
! extern   EXPORT(tsize_t,TIFFReadEncodedTile) (TIFF*, ttile_t, tdata_t, tsize_t);
! extern EXPORT(tsize_t,TIFFReadRawTile) (TIFF*, ttile_t, tdata_t, tsize_t);
! extern     EXPORT(tsize_t,TIFFWriteEncodedStrip) (TIFF*, tstrip_t, tdata_t, tsize_t);
! extern      EXPORT(tsize_t,TIFFWriteRawStrip) (TIFF*, tstrip_t, tdata_t, tsize_t);
! extern  EXPORT(tsize_t,TIFFWriteEncodedTile) (TIFF*, ttile_t, tdata_t, tsize_t);
! extern        EXPORT(tsize_t,TIFFWriteRawTile) (TIFF*, ttile_t, tdata_t, tsize_t);
! extern    EXPORT(void,TIFFSetWriteOffset) (TIFF*, toff_t);
! extern        EXPORT(void,TIFFSwabShort) (uint16*);
! extern   EXPORT(void,TIFFSwabLong) (uint32*);
! extern    EXPORT(void,TIFFSwabDouble) (double*);
! extern  EXPORT(void,TIFFSwabArrayOfShort) (uint16*, unsigned long);
! extern     EXPORT(void,TIFFSwabArrayOfLong) (uint32*, unsigned long);
! extern      EXPORT(void,TIFFSwabArrayOfDouble) (double*, unsigned long);
! extern    EXPORT(void,TIFFReverseBits) (unsigned char *, unsigned long);
! extern  EXPORT(const unsigned char*,TIFFGetBitRevTable) (int);
  #if defined(__cplusplus)
  }
  #endif
*** tiffiop.h.orig   Tue Jul 27 23:50:27 1999
--- tiffiop.h   Sat Oct 16 17:22:00 1999
***************
*** 198,232 ****
  #if defined(__cplusplus)
  extern "C" {
  #endif
! extern int _TIFFgetMode(const char*, const char*);
! extern     int _TIFFNoRowEncode(TIFF*, tidata_t, tsize_t, tsample_t);
! extern      int _TIFFNoStripEncode(TIFF*, tidata_t, tsize_t, tsample_t);
! extern    int _TIFFNoTileEncode(TIFF*, tidata_t, tsize_t, tsample_t);
! extern     int _TIFFNoRowDecode(TIFF*, tidata_t, tsize_t, tsample_t);
! extern      int _TIFFNoStripDecode(TIFF*, tidata_t, tsize_t, tsample_t);
! extern    int _TIFFNoTileDecode(TIFF*, tidata_t, tsize_t, tsample_t);
! extern     void _TIFFNoPostDecode(TIFF*, tidata_t, tsize_t);
! extern       int _TIFFNoSeek(TIFF*, uint32);
! extern void _TIFFSwab16BitData(TIFF*, tidata_t, tsize_t);
! extern      void _TIFFSwab32BitData(TIFF*, tidata_t, tsize_t);
! extern      void _TIFFSwab64BitData(TIFF*, tidata_t, tsize_t);
! extern      int TIFFFlushData1(TIFF*);
! extern      void TIFFFreeDirectory(TIFF*);
! extern  int TIFFDefaultDirectory(TIFF*);
! extern        int TIFFSetCompressionScheme(TIFF*, int);
! extern       int TIFFSetDefaultCompressionState(TIFF*);
! extern      uint32 _TIFFDefaultStripSize(TIFF*, uint32);
! extern    void _TIFFDefaultTileSize(TIFF*, uint32*, uint32*);

! extern   void _TIFFsetByteArray(void**, void*, long);
! extern    void _TIFFsetString(char**, char*);
! extern     void _TIFFsetShortArray(uint16**, uint16*, long);
! extern       void _TIFFsetLongArray(uint32**, uint32*, long);
! extern        void _TIFFsetFloatArray(float**, float*, long);
! extern void _TIFFsetDoubleArray(double**, double*, long);

! extern    void _TIFFprintAscii(FILE*, const char*);
! extern       void _TIFFprintAsciiTag(FILE*, const char*, const char*);

  GLOBALDATA(TIFFErrorHandler,_TIFFwarningHandler);
  GLOBALDATA(TIFFErrorHandler,_TIFFerrorHandler);
--- 198,232 ----
  #if defined(__cplusplus)
  extern "C" {
  #endif
! extern EXPORT(int,_TIFFgetMode) (const char*, const char*);
! extern    EXPORT(int,_TIFFNoRowEncode) (TIFF*, tidata_t, tsize_t, tsample_t);
! extern     EXPORT(int,_TIFFNoStripEncode) (TIFF*, tidata_t, tsize_t, tsample_t);
! extern   EXPORT(int,_TIFFNoTileEncode) (TIFF*, tidata_t, tsize_t, tsample_t);
! extern    EXPORT(int,_TIFFNoRowDecode) (TIFF*, tidata_t, tsize_t, tsample_t);
! extern     EXPORT(int,_TIFFNoStripDecode) (TIFF*, tidata_t, tsize_t, tsample_t);
! extern   EXPORT(int,_TIFFNoTileDecode) (TIFF*, tidata_t, tsize_t, tsample_t);
! extern    EXPORT(void,_TIFFNoPostDecode) (TIFF*, tidata_t, tsize_t);
! extern      EXPORT(int,_TIFFNoSeek) (TIFF*, uint32);
! extern        EXPORT(void,_TIFFSwab16BitData) (TIFF*, tidata_t, tsize_t);
! extern     EXPORT(void,_TIFFSwab32BitData) (TIFF*, tidata_t, tsize_t);
! extern     EXPORT(void,_TIFFSwab64BitData) (TIFF*, tidata_t, tsize_t);
! extern     EXPORT(int,TIFFFlushData1) (TIFF*);
! extern     EXPORT(void,TIFFFreeDirectory) (TIFF*);
! extern EXPORT(int,TIFFDefaultDirectory) (TIFF*);
! extern       EXPORT(int,TIFFSetCompressionScheme) (TIFF*, int);
! extern      EXPORT(void,_TIFFSetDefaultCompressionState) (TIFF*);
! extern   EXPORT(uint32,_TIFFDefaultStripSize) (TIFF*, uint32);
! extern   EXPORT(void,_TIFFDefaultTileSize) (TIFF*, uint32*, uint32*);

! extern  EXPORT(void,_TIFFsetByteArray) (void**, void*, long);
! extern   EXPORT(void,_TIFFsetString) (char**, char*);
! extern    EXPORT(void,_TIFFsetShortArray) (uint16**, uint16*, long);
! extern      EXPORT(void,_TIFFsetLongArray) (uint32**, uint32*, long);
! extern       EXPORT(void,_TIFFsetFloatArray) (float**, float*, long);
! extern        EXPORT(void,_TIFFsetDoubleArray) (double**, double*, long);

! extern   EXPORT(void,_TIFFprintAscii) (FILE*, const char*);
! extern      EXPORT(void,_TIFFprintAsciiTag) (FILE*, const char*, const char*);

  GLOBALDATA(TIFFErrorHandler,_TIFFwarningHandler);
  GLOBALDATA(TIFFErrorHandler,_TIFFerrorHandler);