【问题标题】:How can I use the old iostream.h in C++ (Visual Studio 2010)如何在 C++ 中使用旧的 iostream.h (Visual Studio 2010)
【发布时间】:2012-01-20 08:49:39
【问题描述】:

我有一个 Microsoft Visual C++ 6.0 项目,并使用 MS VS Professional 2010 试用版成功转换了它。没有发生转换问题。但是,在构建转换后的项目时,它告诉我,找不到“iostream.h”。

我知道新的标准化“iostream”和“using namespace std”修复。

但我需要使用旧的 iostream.h。有没有办法做到这一点?原因是,该项目依赖于使用旧 iostream.h 的旧静态库。

有什么建议吗?

【问题讨论】:

  • 我想不出你为什么需要旧的 iostream。
  • Visual Studio 故意破坏与每个版本的二进制兼容性。您不能将使用 Visual C++ 6 编译的静态库用于 Visual Studio 10 项目。
  • 也就是说,如果我没有 Visual C++ 6.0 的副本,我就完蛋了?

标签: c++ visual-studio


【解决方案1】:

如果您有依赖 iostream.h 的源代码,请更改它。 如果您有绝对无法更改的源代码,请自己编写 iostream.h:

#include <iostream>
using namespace std;

静态库不可能依赖头文件。头文件包含在源代码或其他头文件中,静态库由目标代码组成。不过,该库的头文件可以依赖于 iostream.h。 库本身可以依赖于 C++ 标准库。 我假设自 MSVC 6.0 以来微软的标准库发生了不兼容的更改,因此如果您没有源代码或静态库的更新版本,那么您可能不走运。

【讨论】:

  • 请注意,您的代码没有实现&lt;iostream.h&gt;,尽管它对于某些用途可能已经足够接近。标准的&lt;iostream&gt; 与经典的&lt;iostream.h&gt; 有很多不同之处,所有这些都需要(通常很简单)对源代码进行修改。
  • 是的,静态库的头文件只有一个,依赖于iostream.h。但这不是说,图书馆依赖它吗?我以为没有库的头文件,库就不能用了?但我对链接器、头文件、库等主题很陌生。不幸的是,我没有那个库的代码。所以我想如果我想使用 Vistual Studio 2010,我无能为力吗?
  • 我能够编写一个库包装器并将其全部放入一个 DLL(使用 MS Visual C++ 6.0)。该 DLL 可以在 Visual Studio 2010 中使用!看起来所有相关的代码部分都被打包到了 DLL 中,这对我来说很棒:)
【解决方案2】:

您是否使用预编译头文件?如果是这样,那么您必须在 stdafx.h 文件中包含 iostream.h 或删除预编译的头文件。无论如何,似乎没有理由使用已弃用的iostream.h 而不是iostream,所以也许你应该更改需要旧版本的代码部分(如果是的话)。

【讨论】:

    【解决方案3】:

    替换

    #include <iostream.h>
    

    与

    using namespace std;
    
    #include <iostream>
    

    【讨论】:

      猜你喜欢
      • 2011-08-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-16
      • 1970-01-01
      • 1970-01-01
      • 2011-08-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多