Если - под библиотекой - вы имеете в виду динамическую библиотеку - простой ответ: нет, а сложный ответ: нет.
C ++ и динамические библиотеки - это ОЧЕНЬ хрупкая перспектива. Любое небольшое изменение требует перестройки всех модулей, и время выполнения, используемое каждой библиотекой, ДОЛЖНО быть точно таким же экземпляром библиотеки.
Даже если вам удалось получить std :: string через границу dll - хотя внешний интерфейс std :: string фиксирован, любые различия в реализации приведут к повреждению данных.
Передавать простые структуры POD и собственные типы данных между динамическими библиотеками безопасно только в том случае, если среды выполнения потенциально различны - и даже в этом случае необходимо соблюдать осторожность для правильного управления временем жизни объектов - библиотека-распределитель ДОЛЖНА быть библиотекой-распределителем.
Если вы имеете в виду статическую библиотеку - это не имеет большого смысла - я не думаю, что библиотеки, созданные MinGW, будут совместимы с MSDev, а библиотеки MSDev несовместимы с MinGW. Даже если формат файла lib будет номинально совместим - если предположить, что различные искажения имен не помешают успешному линлингу: будет использоваться библиотека STL конечной среды компоновки.