diff -urN libexif-0.6.21/config.h libexif-0.6.21.modified/config.h
--- libexif-0.6.21/config.h	1969-12-31 16:00:00.000000000 -0800
+++ libexif-0.6.21.modified/config.h	1969-12-31 16:00:00.000000000 -0800
@@ -0,0 +1,360 @@
+#if defined(_WIN32)
+/* config.h.  Generated by configure.  */
+/* config.h.in.  Generated from configure.ac by autoheader.  */
+
+/* Define to 1 if translation of program messages to the user's native
+   language is requested. */
+/* #undef ENABLE_NLS 1 */
+
+/* The gettext domain we're using */
+/* #undef GETTEXT_PACKAGE "libexif-12" */
+
+/* Define locale directory. */
+/* #undef LOCALEDIR "UTF-8" */
+
+/* Define to 1 if we want to bind text domain and enable GETTEXT_PACKAGE and
+ * LOCALE_DIR */
+/* #undef BIND_TEXTDOMAIN 1 */
+
+/* Define if the GNU dcgettext() function is already present or preinstalled.
+   */
+/* #undef HAVE_DCGETTEXT 1 */
+
+/* Define to 1 if you have the <dlfcn.h> header file. */
+#define HAVE_DLFCN_H 1
+
+/* Define if the GNU gettext() function is already present or preinstalled. */
+#define HAVE_GETTEXT 1
+
+/* Define if you have the iconv() function. */
+#define HAVE_ICONV 1
+
+/* Define to 1 if you have the <inttypes.h> header file. */
+#define HAVE_INTTYPES_H 1
+
+/* Define to 1 if you have the <memory.h> header file. */
+#define HAVE_MEMORY_H 1
+
+/* Define to 1 if you have the <stdint.h> header file. */
+/* #undef HAVE_STDINT_H 1 */
+
+/* Define to 1 if you have the <stdlib.h> header file. */
+#define HAVE_STDLIB_H 1
+
+/* Define to 1 if you have the <strings.h> header file. */
+#define HAVE_STRINGS_H 1
+
+/* Define to 1 if you have the <string.h> header file. */
+#define HAVE_STRING_H 1
+
+/* Define to 1 if you have the <sys/stat.h> header file. */
+#define HAVE_SYS_STAT_H 1
+
+/* Define to 1 if you have the <sys/types.h> header file. */
+#define HAVE_SYS_TYPES_H 1
+
+/* Define to 1 if you have the <unistd.h> header file. */
+#define HAVE_UNISTD_H 1
+
+/* Define as const if the declaration of iconv() needs const. */
+#define ICONV_CONST
+
+/* Name of package */
+#define PACKAGE "libexif"
+
+/* Define to the address where bug reports for this package should be sent. */
+#define PACKAGE_BUGREPORT "libexif-devel@lists.sourceforge.net"
+
+/* Define to the full name of this package. */
+#define PACKAGE_NAME "EXIF library"
+
+/* Define to the full name and version of this package. */
+#define PACKAGE_STRING "EXIF library 0.6.21"
+
+/* Define to the one symbol short name of this package. */
+#define PACKAGE_TARNAME "libexif"
+
+/* Define to the version of this package. */
+#define PACKAGE_VERSION "0.6.21"
+
+/* Define to 1 if you have the ANSI C header files. */
+#define STDC_HEADERS 1
+
+/* Version number of package */
+#define VERSION "0.6.21"
+
+#elif !defined(__APPLE__)
+/* config.h.  Generated by configure.  */
+/* config.h.in.  Generated from configure.ac by autoheader.  */
+
+/* #define __cplusplus 1 */
+#define LOCALEDIR "UTF-8"
+
+/* Define to 1 if translation of program messages to the user's native
+   language is requested. */
+/* #undef ENABLE_NLS */
+
+/* The gettext domain we're using */
+/* #undef GETTEXT_PACKAGE "libexif-12" */
+
+/* Define locale directory. */
+/* #undef LOCALEDIR "UTF-8" */
+
+/* Define to 1 if we want to bind text domain and enable GETTEXT_PACKAGE and
+ * LOCALE_DIR */
+/* #undef BIND_TEXTDOMAIN 1 */
+
+/* Define if the GNU dcgettext() function is already present or preinstalled.
+   */
+#define HAVE_DCGETTEXT 1
+
+/* Define to 1 if you have the <dlfcn.h> header file. */
+#define HAVE_DLFCN_H 1
+
+/* Define if the GNU gettext() function is already present or preinstalled. */
+#define HAVE_GETTEXT 1
+
+/* Define if you have the iconv() function. */
+#define HAVE_ICONV 1
+
+/* Define to 1 if you have the <inttypes.h> header file. */
+#define HAVE_INTTYPES_H 1
+
+/* Define to 1 if you have the <memory.h> header file. */
+#define HAVE_MEMORY_H 1
+
+/* Define to 1 if you have the <stdint.h> header file. */
+#define HAVE_STDINT_H 1
+
+/* Define to 1 if you have the <stdlib.h> header file. */
+#define HAVE_STDLIB_H 1
+
+/* Define to 1 if you have the <strings.h> header file. */
+#define HAVE_STRINGS_H 1
+
+/* Define to 1 if you have the <string.h> header file. */
+#define HAVE_STRING_H 1
+
+/* Define to 1 if you have the <sys/stat.h> header file. */
+#define HAVE_SYS_STAT_H 1
+
+/* Define to 1 if you have the <sys/types.h> header file. */
+#define HAVE_SYS_TYPES_H 1
+
+/* Define to 1 if you have the <unistd.h> header file. */
+#define HAVE_UNISTD_H 1
+
+/* Define as const if the declaration of iconv() needs const. */
+#define ICONV_CONST
+
+/* Name of package */
+#define PACKAGE "libexif"
+
+/* Define to the address where bug reports for this package should be sent. */
+#define PACKAGE_BUGREPORT "libexif-devel@lists.sourceforge.net"
+
+/* Define to the full name of this package. */
+#define PACKAGE_NAME "EXIF library"
+
+/* Define to the full name and version of this package. */
+#define PACKAGE_STRING "EXIF library 0.6.21"
+
+/* Define to the one symbol short name of this package. */
+#define PACKAGE_TARNAME "libexif"
+
+/* Define to the version of this package. */
+#define PACKAGE_VERSION "0.6.21"
+
+/* Define to 1 if you have the ANSI C header files. */
+#define STDC_HEADERS 1
+
+/* Version number of package */
+#define VERSION "0.6.21"
+
+/* Define to empty if `const' does not conform to ANSI C. */
+/* #undef const */
+#else  // defined(__APPLE__)
+
+// We need different definitions for the iPhone from desktop OS X,
+// we get the necessary #define from TargetConditionals.h
+#include <TargetConditionals.h>
+
+#if TARGET_OS_IPHONE
+
+/* config.h.  Generated from config.h.in by configure.  */
+/* config.h.in.  Generated from configure.ac by autoheader.  */
+
+/* Define to 1 if translation of program messages to the user's native
+   language is requested. */
+/* #undef ENABLE_NLS */
+
+/* The gettext domain we're using */
+/* #undef GETTEXT_PACKAGE "libexif-12" */
+
+/* Define locale directory. */
+/* #undef LOCALEDIR "UTF-8" */
+
+/* Define to 1 if we want to bind text domain and enable GETTEXT_PACKAGE and
+ * LOCALE_DIR */
+/* #undef BIND_TEXTDOMAIN 1 */
+
+/* Define if the GNU dcgettext() function is already present or preinstalled.
+   */
+/* #undef HAVE_DCGETTEXT */
+
+/* Define to 1 if you have the <dlfcn.h> header file. */
+#define HAVE_DLFCN_H 1
+
+/* Define if the GNU gettext() function is already present or preinstalled. */
+/* #undef HAVE_GETTEXT */
+
+/* Define if you have the iconv() function. */
+/* #undef HAVE_ICONV */
+
+/* Define to 1 if you have the <inttypes.h> header file. */
+#define HAVE_INTTYPES_H 1
+
+/* Define to 1 if you have the <memory.h> header file. */
+#define HAVE_MEMORY_H 1
+
+/* Define to 1 if you have the <stdint.h> header file. */
+#define HAVE_STDINT_H 1
+
+/* Define to 1 if you have the <stdlib.h> header file. */
+#define HAVE_STDLIB_H 1
+
+/* Define to 1 if you have the <strings.h> header file. */
+#define HAVE_STRINGS_H 1
+
+/* Define to 1 if you have the <string.h> header file. */
+#define HAVE_STRING_H 1
+
+/* Define to 1 if you have the <sys/stat.h> header file. */
+#define HAVE_SYS_STAT_H 1
+
+/* Define to 1 if you have the <sys/types.h> header file. */
+#define HAVE_SYS_TYPES_H 1
+
+/* Define to 1 if you have the <unistd.h> header file. */
+#define HAVE_UNISTD_H 1
+
+/* Define as const if the declaration of iconv() needs const. */
+/* #undef ICONV_CONST */
+
+/* Name of package */
+#define PACKAGE "libexif"
+
+/* Define to the address where bug reports for this package should be sent. */
+#define PACKAGE_BUGREPORT "libexif-devel@lists.sourceforge.net"
+
+/* Define to the full name of this package. */
+#define PACKAGE_NAME "EXIF library"
+
+/* Define to the full name and version of this package. */
+#define PACKAGE_STRING "EXIF library 0.6.21"
+
+/* Define to the one symbol short name of this package. */
+#define PACKAGE_TARNAME "libexif"
+
+/* Define to the version of this package. */
+#define PACKAGE_VERSION "0.6.21"
+
+/* Define to 1 if you have the ANSI C header files. */
+#define STDC_HEADERS 1
+
+/* Version number of package */
+#define VERSION "0.6.21"
+
+/* Define to empty if `const' does not conform to ANSI C. */
+/* #undef const */
+#else  // !TARGET_OS_IPHONE
+
+/* config.h.  Generated from config.h.in by configure.  */
+/* config.h.in.  Generated from configure.ac by autoheader.  */
+
+/* Define to 1 if translation of program messages to the user's native
+   language is requested. */
+/* #undef ENABLE_NLS */
+
+/* The gettext domain we're using */
+/* #undef GETTEXT_PACKAGE "libexif-12" */
+
+/* Define locale directory. */
+/* #undef LOCALEDIR "UTF-8" */
+
+/* Define to 1 if we want to bind text domain and enable GETTEXT_PACKAGE and
+ * LOCALE_DIR */
+/* #undef BIND_TEXTDOMAIN 1 */
+
+/* Define if the GNU dcgettext() function is already present or preinstalled.
+   */
+/* #undef HAVE_DCGETTEXT */
+
+/* Define to 1 if you have the <dlfcn.h> header file. */
+#define HAVE_DLFCN_H 1
+
+/* Define if the GNU gettext() function is already present or preinstalled. */
+/* #undef HAVE_GETTEXT */
+
+/* Define if you have the iconv() function. */
+#define HAVE_ICONV 1
+
+/* Define to 1 if you have the <inttypes.h> header file. */
+#define HAVE_INTTYPES_H 1
+
+/* Define to 1 if you have the <memory.h> header file. */
+#define HAVE_MEMORY_H 1
+
+/* Define to 1 if you have the <stdint.h> header file. */
+#define HAVE_STDINT_H 1
+
+/* Define to 1 if you have the <stdlib.h> header file. */
+#define HAVE_STDLIB_H 1
+
+/* Define to 1 if you have the <strings.h> header file. */
+#define HAVE_STRINGS_H 1
+
+/* Define to 1 if you have the <string.h> header file. */
+#define HAVE_STRING_H 1
+
+/* Define to 1 if you have the <sys/stat.h> header file. */
+#define HAVE_SYS_STAT_H 1
+
+/* Define to 1 if you have the <sys/types.h> header file. */
+#define HAVE_SYS_TYPES_H 1
+
+/* Define to 1 if you have the <unistd.h> header file. */
+#define HAVE_UNISTD_H 1
+
+/* Define as const if the declaration of iconv() needs const. */
+#define ICONV_CONST
+
+/* Name of package */
+#define PACKAGE "libexif"
+
+/* Define to the address where bug reports for this package should be sent. */
+#define PACKAGE_BUGREPORT "libexif-devel@lists.sourceforge.net"
+
+/* Define to the full name of this package. */
+#define PACKAGE_NAME "EXIF library"
+
+/* Define to the full name and version of this package. */
+#define PACKAGE_STRING "EXIF library 0.6.21"
+
+/* Define to the one symbol short name of this package. */
+#define PACKAGE_TARNAME "libexif"
+
+/* Define to the version of this package. */
+#define PACKAGE_VERSION "0.6.21"
+
+/* Define to 1 if you have the ANSI C header files. */
+#define STDC_HEADERS 1
+
+/* Version number of package */
+#define VERSION "0.6.21"
+
+/* Define to empty if `const' does not conform to ANSI C. */
+/* #undef const */
+#endif  // TARGET_OS_IPHONE
+
+#endif  // _WIN32
diff -urN libexif-0.6.21/libexif/canon/mnote-canon-tag.c libexif-0.6.21.modified/libexif/canon/mnote-canon-tag.c
--- libexif-0.6.21/libexif/canon/mnote-canon-tag.c	1969-12-31 16:00:00.000000000 -0800
+++ libexif-0.6.21.modified/libexif/canon/mnote-canon-tag.c	1969-12-31 16:00:00.000000000 -0800
@@ -160,7 +160,9 @@
 {
 	unsigned int i;
 
+#if defined(BIND_TEXTDOMAIN)
 	bindtextdomain (GETTEXT_PACKAGE, LOCALEDIR); 
+#endif
 	for (i = 0; i < sizeof (table) / sizeof (table[0]); i++)
 		if (table[i].tag == t) return (_(table[i].title));
 	return NULL;
@@ -194,7 +196,9 @@
 		if (table[i].tag == t) {
 			if (!table[i].description || !*table[i].description)
 				return "";
+#if defined(BIND_TEXTDOMAIN)
 			bindtextdomain (GETTEXT_PACKAGE, LOCALEDIR);
+#endif
 			return _(table[i].description);
 		}
 	return NULL;
diff -urN libexif-0.6.21/libexif/exif-entry.c libexif-0.6.21.modified/libexif/exif-entry.c
--- libexif-0.6.21/libexif/exif-entry.c	1969-12-31 16:00:00.000000000 -0800
+++ libexif-0.6.21.modified/libexif/exif-entry.c	1969-12-31 16:00:00.000000000 -0800
@@ -860,7 +860,9 @@
 	 * 
 	 * bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
 	 */
+#if defined(BIND_TEXTDOMAIN)
 	bindtextdomain (GETTEXT_PACKAGE, LOCALEDIR);
+#endif
 
 	if (!e || !e->parent || !e->parent->parent || !maxlen)
 		return val;
diff -urN libexif-0.6.21/libexif/exif-format.c libexif-0.6.21.modified/libexif/exif-format.c
--- libexif-0.6.21/libexif/exif-format.c	1969-12-31 16:00:00.000000000 -0800
+++ libexif-0.6.21.modified/libexif/exif-format.c	1969-12-31 16:00:00.000000000 -0800
@@ -61,7 +61,9 @@
 	 * 
 	 * bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
 	 */
+#if defined(BIND_TEXTDOMAIN)
 	bindtextdomain (GETTEXT_PACKAGE, LOCALEDIR);
+#endif
 
 	for (i = 0; ExifFormatTable[i].name; i++)
 		if (ExifFormatTable[i].format == format)
diff -urN libexif-0.6.21/libexif/exif-mem.c libexif-0.6.21.modified/libexif/exif-mem.c
--- libexif-0.6.21/libexif/exif-mem.c	1969-12-31 16:00:00.000000000 -0800
+++ libexif-0.6.21.modified/libexif/exif-mem.c	1969-12-31 16:00:00.000000000 -0800
@@ -1,3 +1,23 @@
+ /* exif-mem.c
+  *
+  * Copyright (c) 2003 Lutz Mueller <lutz@users.sourceforge.net>
+  *
+  * This library is free software; you can redistribute it and/or
+  * modify it under the terms of the GNU Lesser General Public
+  * License as published by the Free Software Foundation; either
+  * version 2 of the License, or (at your option) any later version.
+  *
+  * This library is distributed in the hope that it will be useful,
+  * but WITHOUT ANY WARRANTY; without even the implied warranty of
+  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+  * Lesser General Public License for more details.
+  *
+  * You should have received a copy of the GNU Lesser General Public
+  * License along with this library; if not, write to the
+  * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+  * Boston, MA  02110-1301  USA.
+  */
+
 #include <libexif/exif-mem.h>
 
 #include <stdlib.h>
diff -urN libexif-0.6.21/libexif/exif-tag.c libexif-0.6.21.modified/libexif/exif-tag.c
--- libexif-0.6.21/libexif/exif-tag.c	1969-12-31 16:00:00.000000000 -0800
+++ libexif-0.6.21.modified/libexif/exif-tag.c	1969-12-31 16:00:00.000000000 -0800
@@ -877,7 +877,7 @@
  * Return the number of entries in the EXIF tag table, including the
  * terminating NULL entry.
  */
-inline unsigned int
+unsigned int
 exif_tag_table_count (void)
 {
 	return sizeof (ExifTagTable) / sizeof (ExifTagTable[0]);
@@ -990,7 +990,9 @@
 	 * 
 	 * bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
 	 */
+#if defined(BIND_TEXTDOMAIN)
 	bindtextdomain (GETTEXT_PACKAGE, LOCALEDIR);
+#endif
 	return _(ExifTagTable[i].title);
 }
 
@@ -1024,7 +1026,9 @@
 	 * 
 	 * bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
 	 */
+#if defined(BIND_TEXTDOMAIN)
 	bindtextdomain (GETTEXT_PACKAGE, LOCALEDIR);
+#endif
 	return _(ExifTagTable[i].description);
 }
 
diff -urN libexif-0.6.21/libexif/exif-utils.h libexif-0.6.21.modified/libexif/exif-utils.h
--- libexif-0.6.21/libexif/exif-utils.h	1969-12-31 16:00:00.000000000 -0800
+++ libexif-0.6.21.modified/libexif/exif-utils.h	1969-12-31 16:00:00.000000000 -0800
@@ -31,6 +31,7 @@
 #include <libexif/exif-format.h>
 #include <libexif/_stdint.h>
 
+#include "config.h"
 
 /* If these definitions don't work for you, please let us fix the 
  * macro generating _stdint.h */
diff -urN libexif-0.6.21/libexif/fuji/mnote-fuji-tag.c libexif-0.6.21.modified/libexif/fuji/mnote-fuji-tag.c
--- libexif-0.6.21/libexif/fuji/mnote-fuji-tag.c	1969-12-31 16:00:00.000000000 -0800
+++ libexif-0.6.21.modified/libexif/fuji/mnote-fuji-tag.c	1969-12-31 16:00:00.000000000 -0800
@@ -83,7 +83,9 @@
 {
 	unsigned int i;
 
+#if defined(BIND_TEXTDOMAIN)
 	bindtextdomain (GETTEXT_PACKAGE, LOCALEDIR);
+#endif
 	for (i = 0; i < sizeof (table) / sizeof (table[0]); i++)
 		if (table[i].tag == t) return (_(table[i].title));
 	return NULL;
@@ -98,7 +100,9 @@
 		if (table[i].tag == t) {
 			if (!table[i].description || !*table[i].description)
 				return "";
+#if defined(BIND_TEXTDOMAIN)
 			bindtextdomain (GETTEXT_PACKAGE, LOCALEDIR);
+#endif
 			return _(table[i].description);
 		}
 	return NULL;
diff -urN libexif-0.6.21/libexif/olympus/mnote-olympus-tag.c libexif-0.6.21.modified/libexif/olympus/mnote-olympus-tag.c
--- libexif-0.6.21/libexif/olympus/mnote-olympus-tag.c	1969-12-31 16:00:00.000000000 -0800
+++ libexif-0.6.21.modified/libexif/olympus/mnote-olympus-tag.c	1969-12-31 16:00:00.000000000 -0800
@@ -208,7 +208,9 @@
 {
 	unsigned int i;
 
+#if defined(BIND_TEXTDOMAIN)
 	bindtextdomain (GETTEXT_PACKAGE, LOCALEDIR);
+#endif
 	for (i = 0; i < sizeof (table) / sizeof (table[0]); i++)
 		if (table[i].tag == t) return (_(table[i].title));
 	return NULL;
@@ -223,7 +225,9 @@
 		if (table[i].tag == t) {
 			if (!table[i].description || !*table[i].description)
 				return "";
+#if defined(BIND_TEXTDOMAIN)
 			bindtextdomain (GETTEXT_PACKAGE, LOCALEDIR);
+#endif
 			return _(table[i].description);
 		}
 	return NULL;
diff -urN libexif-0.6.21/libexif/pentax/mnote-pentax-tag.c libexif-0.6.21.modified/libexif/pentax/mnote-pentax-tag.c
--- libexif-0.6.21/libexif/pentax/mnote-pentax-tag.c	1969-12-31 16:00:00.000000000 -0800
+++ libexif-0.6.21.modified/libexif/pentax/mnote-pentax-tag.c	1969-12-31 16:00:00.000000000 -0800
@@ -153,7 +153,9 @@
 {
 	unsigned int i;
 
+#if defined(BIND_TEXTDOMAIN)
 	bindtextdomain (GETTEXT_PACKAGE, LOCALEDIR);
+#endif
 	for (i = 0; i < sizeof (table) / sizeof (table[0]); i++)
 		if (table[i].tag == t) return (_(table[i].title));
 	return NULL;
@@ -168,7 +170,9 @@
 		if (table[i].tag == t) {
 			if (!table[i].description || !*table[i].description)
 				return "";
+#if defined(BIND_TEXTDOMAIN)
 			bindtextdomain (GETTEXT_PACKAGE, LOCALEDIR);
+#endif
 			return _(table[i].description);
 		}
 	return NULL;
diff -urN libexif-0.6.21/libexif/_stdint.h libexif-0.6.21.modified/libexif/_stdint.h
--- libexif-0.6.21/libexif/_stdint.h	1969-12-31 16:00:00.000000000 -0800
+++ libexif-0.6.21.modified/libexif/_stdint.h	1969-12-31 16:00:00.000000000 -0800
@@ -1,2 +1,15 @@
 /* This file is generated automatically by configure */
+#if defined(_WIN32)
+// Define C99 equivalent types.
+typedef signed char           int8_t;
+typedef signed short          int16_t;
+typedef signed int            int32_t;
+typedef signed long long      int64_t;
+typedef signed long long      ssize_t;
+typedef unsigned char         uint8_t;
+typedef unsigned short        uint16_t;
+typedef unsigned int          uint32_t;
+typedef unsigned long long    uint64_t;
+#else
 #include <stdint.h>
+#endif
