Заголовок C string.h
и C++ string
заголовок не являются взаимозаменяемыми.
В целом, хотя, Ваша проблема состоит в том, что файл становится правильно скомпилированным, но неправильная библиотека времени выполнения становится связанной в.
Dev-C++ использует GCC. GCC может правильно определить язык в файле на основе расширения файла, но не свяжет правильную библиотеку времени выполнения в том, если Вы конкретно не спрашиваете это к (-lstdc ++ в командной строке). Вызов GCC как "g ++" (или, в Вашем случае, "mingwin32-g ++") также получит правильный язык и свяжет необходимую библиотеку.
Необходимо связаться против времени выполнения C++. Это зависит от Вашей платформы, и компилятор, но добавляющий-lC к Вашему linkline мог бы сделать это.
Так мог бы, связывая использование Вашего компилятора C++, а не ld.
В любом случае, вероятно, необходимо связать использование компилятора C++, а не ld, если Вы хотите, чтобы Ваш код C++ работал правильно - это часто требуется для исключений и статических инициализаторов работать правильно...