--- a/Src/DasherCore/Alphabet/AlphIO.cpp
+++ b/Src/DasherCore/Alphabet/AlphIO.cpp
@@ -10,6 +10,8 @@
 
 #include "AlphIO.h"
 
+#include <cstring>
+
 using namespace Dasher;
 using namespace std;
 using namespace expat;
--- a/Src/DasherCore/ColourIO.cpp
+++ b/Src/DasherCore/ColourIO.cpp
@@ -5,6 +5,9 @@
 #include "../Common/Common.h"
 
 #include "ColourIO.h"
+
+#include <cstring>
+
 using namespace Dasher;
 using namespace std;
 using namespace expat;
--- a/Src/DasherCore/ControlManager.cpp
+++ b/Src/DasherCore/ControlManager.cpp
@@ -2,6 +2,9 @@
 #include "../Common/Common.h"
 
 #include "ControlManager.h"
+
+#include <cstring>
+
 using namespace Dasher;
 using namespace std;
 // Track memory leaks on Windows to the line that new'd the memory
--- a/Src/DasherCore/ConversionManager.cpp
+++ b/Src/DasherCore/ConversionManager.cpp
@@ -12,6 +12,8 @@
 #include <vector>
 #include <stdlib.h>
 
+#include <cstring>
+
 using namespace Dasher;
 
 CConversionManager::CConversionManager(CNodeCreationManager *pNCManager, CConversionHelper *pHelper, int CMid) 
--- a/Src/DasherCore/DasherModel.cpp
+++ b/Src/DasherCore/DasherModel.cpp
@@ -37,6 +37,8 @@
 #include "LanguageModelling/MixtureLanguageModel.h"
 #include "NodeCreationManager.h"
 
+#include <cstring>
+
 using namespace Dasher;
 using namespace std;
 
--- a/Src/DasherCore/FileLogger.cpp
+++ b/Src/DasherCore/FileLogger.cpp
@@ -25,6 +25,8 @@
 #include <sys/time.h>
 #endif
 
+#include <cstring>
+
 CFileLogger::CFileLogger(const std::string& strFilenamePath, eLogLevel iLogLevel, int iOptionsMask)
 {
   m_strFilenamePath       = "";
--- a/Src/DasherCore/TimeSpan.cpp
+++ b/Src/DasherCore/TimeSpan.cpp
@@ -19,6 +19,8 @@
 #endif
 #endif
 
+#include <cstring>
+
 CTimeSpan::CTimeSpan(const string& strName, bool bAddDate)
 {
   InitMemberVars();
--- a/Src/DasherCore/UserLog.cpp
+++ b/Src/DasherCore/UserLog.cpp
@@ -10,6 +10,8 @@
 #include <sys/time.h>
 #endif
 
+#include <cstring>
+
 // Track memory leaks on Windows to the line that new'd the memory
 #ifdef _WIN32
 #ifdef _DEBUG
--- a/Src/DasherCore/UserLogTrial.cpp
+++ b/Src/DasherCore/UserLogTrial.cpp
@@ -3,6 +3,8 @@
 
 #include "UserLogTrial.h"
 
+#include <cstring>
+
 // Track memory leaks on Windows to the line that new'd the memory
 #ifdef _WIN32
 #ifdef _DEBUG
--- a/Src/DasherCore/XMLUtil.cpp
+++ b/Src/DasherCore/XMLUtil.cpp
@@ -7,6 +7,8 @@
 #include <sys/types.h>
 #include <sys/stat.h>
 
+#include <cstring>
+
 // Track memory leaks on Windows to the line that new'd the memory
 #ifdef _WIN32
 #ifdef _DEBUG
--- a/Src/Gtk2/DasherAppSettings.cpp
+++ b/Src/Gtk2/DasherAppSettings.cpp
@@ -16,6 +16,8 @@
 #include "dasher.h"
 #include "GtkDasherControl.h"
 
+#include <cstring>
+
 // FIXME - should really do something to make this a singleton class
 
 // TODO: Rename this file to fit in with naming conventions
--- a/Src/Gtk2/DasherControl.cpp
+++ b/Src/Gtk2/DasherControl.cpp
@@ -13,6 +13,7 @@
 #include <gdk/gdk.h>
 #include <gdk/gdkkeysyms.h>
 #include <sys/stat.h>
+#include <cstring>
 using namespace std;
 
 // 'Private' methods (only used in this file)
--- a/Src/Gtk2/KeyboardHelper.cpp
+++ b/Src/Gtk2/KeyboardHelper.cpp
@@ -7,6 +7,7 @@
 #include <iostream>
 #include <sstream>
 #include <string>
+#include <cstring>
 
 CKeyboardHelper::CKeyboardHelper(DasherAppSettings *pAppSettings) {
   m_pAppSettings = pAppSettings;
--- a/Src/Gtk2/Preferences.cpp
+++ b/Src/Gtk2/Preferences.cpp
@@ -10,6 +10,8 @@
 #include "Parameters.h"
 #include "module_settings_window.h"
 
+#include <cstring>
+
 #define DASHER_PREFERENCES_DIALOGUE_PRIVATE(pSelf) (DasherPreferencesDialoguePrivate *)(pSelf->private_data);
 
 /* Static global member - use to deal with callbacks */
--- a/Src/Gtk2/dasher_action_speech.cpp
+++ b/Src/Gtk2/dasher_action_speech.cpp
@@ -8,6 +8,8 @@
 #include <glib/gi18n.h>
 #include <gnome-speech/gnome-speech.h>
 #include <libbonobo.h>
+
+#include <cstring>
 //#include <libintl.h>
 //#include <string.h>
 
--- a/Src/Gtk2/dasher_editor.cpp
+++ b/Src/Gtk2/dasher_editor.cpp
@@ -23,6 +23,8 @@
 #include "dasher_main.h"
 #include "game_mode_helper.h"
 
+#include <cstring>
+
 // TODO: Maybe reimplement something along the lines of the following, which used to be in edit.cc
 
 // void set_mark() {
--- a/Src/Gtk2/dasher_main.cpp
+++ b/Src/Gtk2/dasher_main.cpp
@@ -19,6 +19,8 @@
 #endif
 #include "dasher_main.h"
 
+#include <cstring>
+
 /* Static instance of singleton, USE SPARINGLY */
 static DasherMain *g_pDasherMain = NULL; 
 
--- a/Src/Gtk2/game_mode_helper.cpp
+++ b/Src/Gtk2/game_mode_helper.cpp
@@ -1,5 +1,7 @@
 #include "game_mode_helper.h"
 
+#include <cstring>
+
 struct _GameModeHelperPrivate {
   GtkDasherControl *pControl;
   gchar *szTarget;
--- a/Src/Gtk2/module_settings_window.cpp
+++ b/Src/Gtk2/module_settings_window.cpp
@@ -1,5 +1,7 @@
 #include "module_settings_window.h"
 
+#include <cstring>
+
 typedef struct _ModuleSettingsData ModuleSettingsData;
 
 struct _ModuleSettingsData {
