diff --git a/Makefile.am b/Makefile.am
index f0c4fa61c..9b87c4a13 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -429,7 +429,7 @@ TAG_LIBS = \
 	$(ID3TAG_LIBS)
 
 libtag_a_SOURCES =\
-	src/TagTable.hxx \
+	src/tag/TagTable.cxx src/TagTable.hxx \
 	src/tag/ApeLoader.cxx src/tag/ApeLoader.hxx \
 	src/tag/ApeReplayGain.cxx src/tag/ApeReplayGain.hxx \
 	src/tag/ApeTag.cxx src/tag/ApeTag.hxx
diff --git a/src/decoder/FlacMetadata.cxx b/src/decoder/FlacMetadata.cxx
index f53c36b54..f3b5ba81c 100644
--- a/src/decoder/FlacMetadata.cxx
+++ b/src/decoder/FlacMetadata.cxx
@@ -28,7 +28,7 @@
 #include <glib.h>
 
 #include <assert.h>
-#include <stdlib.h>
+#include <string.h>
 
 static bool
 flac_find_float_comment(const FLAC__StreamMetadata *block,
diff --git a/src/decoder/XiphTags.cxx b/src/decoder/XiphTags.cxx
index b2aa6e82d..b9958a19a 100644
--- a/src/decoder/XiphTags.cxx
+++ b/src/decoder/XiphTags.cxx
@@ -24,5 +24,5 @@ const struct tag_table xiph_tags[] = {
 	{ "tracknumber", TAG_TRACK },
 	{ "discnumber", TAG_DISC },
 	{ "album artist", TAG_ALBUM_ARTIST },
-	{ NULL, TAG_NUM_OF_ITEM_TYPES }
+	{ nullptr, TAG_NUM_OF_ITEM_TYPES }
 };
diff --git a/src/tag/ApeTag.cxx b/src/tag/ApeTag.cxx
index 34c2b703b..acaeada25 100644
--- a/src/tag/ApeTag.cxx
+++ b/src/tag/ApeTag.cxx
@@ -24,6 +24,10 @@
 #include "TagTable.hxx"
 #include "TagHandler.hxx"
 
+#include <glib.h>
+
+#include <string.h>
+
 const struct tag_table ape_tags[] = {
 	{ "album artist", TAG_ALBUM_ARTIST },
 	{ "year", TAG_DATE },
diff --git a/src/tag/TagTable.cxx b/src/tag/TagTable.cxx
new file mode 100644
index 000000000..9c833d5a2
--- /dev/null
+++ b/src/tag/TagTable.cxx
@@ -0,0 +1,54 @@
+/*
+ * Copyright (C) 2003-2013 The Music Player Daemon Project
+ * http://www.musicpd.org
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ */
+
+#include "TagTable.hxx"
+
+#include <glib.h>
+
+#include <string.h>
+
+/**
+ * Looks up a string in a tag translation table (case sensitive).
+ * Returns TAG_NUM_OF_ITEM_TYPES if the specified name was not found
+ * in the table.
+ */
+tag_type
+tag_table_lookup(const struct tag_table *table, const char *name)
+{
+	for (; table->name != nullptr; ++table)
+		if (strcmp(name, table->name) == 0)
+			return table->type;
+
+	return TAG_NUM_OF_ITEM_TYPES;
+}
+
+/**
+ * Looks up a string in a tag translation table (case insensitive).
+ * Returns TAG_NUM_OF_ITEM_TYPES if the specified name was not found
+ * in the table.
+ */
+tag_type
+tag_table_lookup_i(const struct tag_table *table, const char *name)
+{
+	for (; table->name != nullptr; ++table)
+		if (g_ascii_strcasecmp(name, table->name) == 0)
+			return table->type;
+
+	return TAG_NUM_OF_ITEM_TYPES;
+}
diff --git a/src/tag/TagTable.hxx b/src/tag/TagTable.hxx
index 70c02e6e5..88bf5b028 100644
--- a/src/tag/TagTable.hxx
+++ b/src/tag/TagTable.hxx
@@ -23,10 +23,6 @@
 #include "TagType.h"
 #include "gcc.h"
 
-#include <glib.h>
-
-#include <string.h>
-
 struct tag_table {
 	const char *name;
 
@@ -39,15 +35,8 @@ struct tag_table {
  * in the table.
  */
 gcc_pure
-static inline enum tag_type
-tag_table_lookup(const struct tag_table *table, const char *name)
-{
-	for (; table->name != nullptr; ++table)
-		if (strcmp(name, table->name) == 0)
-			return table->type;
-
-	return TAG_NUM_OF_ITEM_TYPES;
-}
+tag_type
+tag_table_lookup(const tag_table *table, const char *name);
 
 /**
  * Looks up a string in a tag translation table (case insensitive).
@@ -55,14 +44,7 @@ tag_table_lookup(const struct tag_table *table, const char *name)
  * in the table.
  */
 gcc_pure
-static inline enum tag_type
-tag_table_lookup_i(const struct tag_table *table, const char *name)
-{
-	for (; table->name != nullptr; ++table)
-		if (g_ascii_strcasecmp(name, table->name) == 0)
-			return table->type;
-
-	return TAG_NUM_OF_ITEM_TYPES;
-}
+tag_type
+tag_table_lookup_i(const tag_table *table, const char *name);
 
 #endif