diff --git a/ResourceFactory.h b/ResourceFactory.h
index a5bae6797d9e51cd8db35287e2bcb8a4ae72509d..27c628683bb893be2e2c7fa1b2d5df13a774d905 100644
--- a/ResourceFactory.h
+++ b/ResourceFactory.h
@@ -64,7 +64,7 @@ private:
  * \todo Does this need to be global?
  * Maybe we should wrap a class around the generated resources?
  */
-extern const string c_ResourceIdentifiers[];
+extern "C++" const string c_ResourceIdentifiers[];
 
 /**
  * \brief Declaration of the external list of resource indices
@@ -78,7 +78,7 @@ extern const string c_ResourceIdentifiers[];
  * \todo Does this need to be global?
  * Maybe we should wrap a class around the generated resources?
  */
-extern const unsigned int c_ResourceIndex[][2];
+extern "C++" const unsigned int c_ResourceIndex[][2];
 
 /**
  * \brief Declaration of the external resource storage container
@@ -90,6 +90,6 @@ extern const unsigned int c_ResourceIndex[][2];
  * \todo Does this need to be global?
  * Maybe we should wrap a class around the generated resources?
  */
-extern const unsigned char c_ResourceStorage[];
+extern "C++" const unsigned char c_ResourceStorage[];
 
 #endif /*RESOURCEFACTORY_H_*/
diff --git a/Starsphere.h b/Starsphere.h
index a41e875998f70a0858577601b83c27490e652146..312bb7e2993ecce92bd443d842e247db36f4d2b8 100644
--- a/Starsphere.h
+++ b/Starsphere.h
@@ -216,15 +216,15 @@ private:
 };
 
 /* Constellation & star coordinates are in starlist.C */
-extern float star_info[][2];
-extern int Nstars;
+extern "C" float star_info[][2];
+extern "C" int Nstars;
 
 /* Pulsar coordinates are in pulsar_list.C */
-extern float pulsar_info[][2];
-extern int Npulsars;
+extern "C" float pulsar_info[][2];
+extern "C" int Npulsars;
 
 /* SNR coordinates are in snr_list.C */
-extern float SNR_info[][2];
-extern int NSNRs;
+extern "C" float SNR_info[][2];
+extern "C" int NSNRs;
 
 #endif /*STARSPHERE_H_*/
diff --git a/orc/ResourceCompiler.cpp b/orc/ResourceCompiler.cpp
index d67c5b6dcb8b27392d9af67ee851c5f5bc9a0414..d81e9bc1b73e10a22bc21ea38a12cd777b112af7 100644
--- a/orc/ResourceCompiler.cpp
+++ b/orc/ResourceCompiler.cpp
@@ -64,17 +64,17 @@ void ResourceCompiler::compile()
 		
 		// write code file contents (remove trailing commas)
 		string output = resourceIdentifierInitializer.str();
-		outputFile << "std::string c_ResourceIdentifiers[] = {" << endl;
+		outputFile << "extern \"C++\" const std::string c_ResourceIdentifiers[] = {" << endl;
 		outputFile << output.substr(0, output.length() - 1);
 		outputFile << endl << "};" << endl << endl;
 		
 		output = resourceIndexInitializer.str();
-		outputFile << "unsigned int c_ResourceIndex[][2] = {" << endl;		
+		outputFile << "extern \"C++\" const unsigned int c_ResourceIndex[][2] = {" << endl;		
 		outputFile << output.substr(0, output.length() - 1);
 		outputFile << endl << "};" << endl << endl;
 		
 		output = resourceStorageInitializer.str();
-		outputFile << "unsigned char c_ResourceStorage[] = {" << endl;
+		outputFile << "extern \"C++\" const unsigned char c_ResourceStorage[] = {" << endl;
 		outputFile << output.substr(0, output.length() - 1);
 		outputFile << endl << "};" << endl << endl;
 	}