For compatibility with old C compilers, don't use const in C code.
diff --git a/ndn-cpp/encoding/BinaryXMLDecoder.c b/ndn-cpp/encoding/BinaryXMLDecoder.c
index 5798364..f68e9b9 100644
--- a/ndn-cpp/encoding/BinaryXMLDecoder.c
+++ b/ndn-cpp/encoding/BinaryXMLDecoder.c
@@ -7,7 +7,7 @@
 #include "BinaryXML.h"
 #include "BinaryXMLDecoder.h"
 
-const char *ndn_BinaryXMLDecoder_decodeTypeAndValue(struct ndn_BinaryXMLDecoder *self, unsigned int *type, unsigned int *valueOut) 
+char *ndn_BinaryXMLDecoder_decodeTypeAndValue(struct ndn_BinaryXMLDecoder *self, unsigned int *type, unsigned int *valueOut) 
 {
   unsigned int value = 0;
   
@@ -28,5 +28,5 @@
 	}
 
 	*valueOut = value;
-  return (const char *)0;
+  return (char *)0;
 }
diff --git a/ndn-cpp/encoding/BinaryXMLDecoder.h b/ndn-cpp/encoding/BinaryXMLDecoder.h
index 50374cf..c9e558d 100644
--- a/ndn-cpp/encoding/BinaryXMLDecoder.h
+++ b/ndn-cpp/encoding/BinaryXMLDecoder.h
@@ -12,12 +12,12 @@
 #endif
 
 struct ndn_BinaryXMLDecoder {
-  const unsigned char *input;
+  unsigned char *input;
   unsigned int inputLength;
   unsigned int offset;
 };
 
-static inline void ndn_BinaryXMLDecoder_init(struct ndn_BinaryXMLDecoder *self, const unsigned char *input, unsigned int inputLength) 
+static inline void ndn_BinaryXMLDecoder_init(struct ndn_BinaryXMLDecoder *self, unsigned char *input, unsigned int inputLength) 
 {
   self->input = input;
   self->inputLength = inputLength;
@@ -25,7 +25,7 @@
 }
 
 // Even though the first byte should not be zero, this silently ignores initial zeros.
-const char *ndn_BinaryXMLDecoder_decodeTypeAndValue(struct ndn_BinaryXMLDecoder *self, unsigned int *type, unsigned int *value);
+char *ndn_BinaryXMLDecoder_decodeTypeAndValue(struct ndn_BinaryXMLDecoder *self, unsigned int *type, unsigned int *value);
 
 /**
  * Set the offset into the input, used for the next read.
diff --git a/ndn-cpp/encoding/BinaryXMLStructureDecoder.h b/ndn-cpp/encoding/BinaryXMLStructureDecoder.h
index 58a595f..504a1bd 100644
--- a/ndn-cpp/encoding/BinaryXMLStructureDecoder.h
+++ b/ndn-cpp/encoding/BinaryXMLStructureDecoder.h
@@ -40,8 +40,8 @@
  * @param inputLength the number of bytes in input.
  * @return 0 for success, else an error string
  */
-const char *ndn_BinaryXMLStructureDecoder_findElementEnd
-  (struct ndn_BinaryXMLStructureDecoder *self, const unsigned char *input, unsigned int inputLength);
+char *ndn_BinaryXMLStructureDecoder_findElementEnd
+  (struct ndn_BinaryXMLStructureDecoder *self, unsigned char *input, unsigned int inputLength);
 
 #ifdef	__cplusplus
 }
diff --git a/ndn-cpp/encoding/BinaryXMLStructureDecoder.hpp b/ndn-cpp/encoding/BinaryXMLStructureDecoder.hpp
index 3ff2397..bcccedf 100644
--- a/ndn-cpp/encoding/BinaryXMLStructureDecoder.hpp
+++ b/ndn-cpp/encoding/BinaryXMLStructureDecoder.hpp
@@ -30,8 +30,8 @@
    * @param inputLength the number of bytes in input.
    * @return true if found the element end, false if need to read more. (This is the same as returning gotElementEnd().)
    */
-  bool findElementEnd(const unsigned char *input, unsigned int inputLength) {
-    const char *error;
+  bool findElementEnd(unsigned char *input, unsigned int inputLength) {
+    char *error;
     if (error = ndn_BinaryXMLStructureDecoder_findElementEnd(&base_, input, inputLength))
       throw std::runtime_error(error);
     return gotElementEnd();