strstreambuf Устаревший в Visual C ++ 2010 - можно ли на него еще ссылаться? - PullRequest
0 голосов
/ 19 ноября 2010

Согласно http://msdn.microsoft.com/en-us/library/h21twfw7(v=VS.100).aspx (для Visual Studio 2010) strstreambuf устарела.Я придерживался мнения, что устарел означает, что объявление / определения все еще доступны, но будут удалены (или удалены) из библиотеки в ближайшем будущем.Но попытка связать с классом не удалась с проектом Visual C ++ 2010.Этот вопрос состоит из двух частей:

  • Может ли кто-нибудь подтвердить для меня, что strstreambuf действительно был полностью удален из библиотек Visual C ++ 2010?При выполнении краткой диагностики я не могу найти определения в «C: \ Program Files \ Microsoft Visual Studio 10.0 \ VC \ lib \ msvcprt.lib» (для VS2010), в то время как определение присутствовало в «C: \».Программные файлы \ Microsoft Visual Studio 8 \ VC \ lib \ msvcprt.lib "(для VS2005).Чтобы узнать, предоставлено ли определение, я использовал dumpbin.exe на .lib.Я также проверил «C: \ Program Files \ Microsoft Visual Studio 10.0 \ VC \ include \ strstream» и заметил, что ключевое слово _CRTIMP2_PURE (aka __declspec (dllimport)), экспортирующее класс, пропало в 2010 году.
  • Могу ли я по-прежнему ссылаться на strstreambuf, даже если он устарел в Visual C ++ 2010 из проекта Visual C ++ 2010?

Немного предыстории моих потребностей:

  • Я используюсторонняя проприетарная библиотека, которая ссылается на strstreambuf.Возможно, проприетарная библиотека была построена с использованием Visual C ++ 2005, и мой проект в настоящее время также на Visual C ++ 2005.
  • При обновлении моего проекта до Visual C ++ 2010 мы поняли, что не можем ссылаться на стороннюю проприетарную библиотеку, посколькуstrstreambuf больше не предоставляется Visual C ++ 2010.

Спасибо

1 Ответ

3 голосов
/ 19 ноября 2010

Причина, по которой вы не можете связать библиотеку C ++, созданную в VS2005 с VS2010, не в том, что strstreambuf устарел или нет, а в том, что двоичные файлы библиотеки времени выполнения изменились для новой версии компилятора.Отчасти это связано с тем, что некоторые части стандартной библиотеки C ++ были заменены на заголовки.

Действительно, очень плохая идея связать код C ++, созданный с помощью одного компилятора, с библиотекой времени выполнения для другого компилятора;вы действительно хотите убедиться, что вы строите все, что статически связано с той же версией компилятора, что и хаос, вероятно, последует иначе.

Ваша лучшая (единственная) надежда - заставить поставщика указанной сторонней библиотекивыложи версию, созданную на VS2010.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...