strstreambuf在Visual C ++ 2010中不推荐使用 - 是否仍然可以链接到它?

时间:2010-11-18 21:31:16

标签: visual-studio-2010 visual-c++

根据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:\”中Program Files \ Microsoft Visual Studio 8 \ VC \ lib \ msvcprt.lib“(适用于VS2005)。为了确定是否提供了定义,我在.lib上使用了dumpbin.exe。我还检查了“C:\ Program Files \ Microsoft Visual Studio 10.0 \ VC \ include \ strstream”,并注意到导出该类的_CRTIMP2_PURE(又名__declspec(dllimport))关键字在2010年消失了。
  • 即使在Visual C ++ 2010中从Visual C ++ 2010项目中弃用了strstreambuf,我仍然可以链接到strstreambuf吗?

关于我的需求的一点背景:

  • 我使用链接到strstreambuf的第三方专有库。专有的lib可能是使用Visual C ++ 2005构建的,我的项目目前也在Visual C ++ 2005中。
  • 在将项目升级到Visual C ++ 2010时,我们意识到由于Visual C ++ 2010不再提供strstreambuf,因此我们无法链接到第三方专有库。

由于

1 个答案:

答案 0 :(得分:3)

您无法将VS2005中构建的C ++库与VS2010链接的原因不是因为strstreambuf被弃用,而是因为新编译器版本的运行时库二进制文件已更改。部分原因是C ++标准库的几个部分已经转换为仅标题。

将使用一个编译器构建的C ++代码与另一个编译器的运行时库链接起来是一个非常非常糟糕的主意;你真的想确保你构建的所有内容与相同的编译器版本静态链接,否则可能会发生混乱。

您最好的(唯一的)希望是让第三方图书馆的供应商咳嗽使用VS2010构建的版本。