我正在尝试将当前代码从vs6.0迁移到vs2010。
编译代码时遇到错误,例如
"无法打开包含文件:' stdiostr.h':没有这样的文件或目录"
代码中包含两个文件......
stdiostr.h
strstrea.h
但是我的Visual Studio 2010包含文件夹中没有这两个文件,甚至包括stdiostr
和strstrea
文件。而在Visual Studio 6.0的包含文件夹中,文件存在。
那么任何人都可以告诉我应该包含哪些文件来使这段代码与Visual Studio 2010一起使用?
在互联网的某个地方,我读到strstream
是strstrea
的替代方案。是真的吗?
答案 0 :(得分:1)
我认为以下链接可以帮助您解决问题。
您必须删除任何旧的iostream标头(
fstream.h
,iomanip.h
,ios.h
,iostream.h
,istream.h
,ostream.h
,streamb.h
和strstrea.h
)您已包含在代码中并添加了一个或多个 新的标准C ++ iostream标头(<fstream>
,<iomanip>
,<ios>
,<iosfwd>
,<iostream>
,<istream>
,<ostream>
,<sstream>
,<streambuf>
, 和<strstream>
,都没有.h
扩展名
http://support.microsoft.com/kb/154419
http://msdn.microsoft.com/en-us/library/8h8eh904(v=vs.90).aspx
答案 1 :(得分:0)
问题7:为什么我得到&#34;编译器错误C2371:&#39;标识符&#39;重新定义;不同的基本类型&#34;?
A7:在早于Visual C ++ 2005的Visual C ++版本中,混合标准C ++标头和旧的iostream标头会导致此错误,即使它们包含在不同的源文件中也是如此。以下是不同的标题:
Old iostream Headers FSTREAM.H IOMANIP.H IOS.H IOSTREAM.H ISTREAM.H OSTREAM.H STDIOSTR.H STREAMB.H STRSTREA.H
来源:http://support.microsoft.com/kb/154419
这些与C ++标准库中的标题之间没有一对一的映射。
我建议您删除对这些文件的引用,然后在标准标头中插入特定声明所需的标头。
从VC ++ 6.0天开始,您可能会发现某些旧类型已被弃用。 http://en.cppreference.com/是一个很好的信息来源。