将项目从 vc6 转换为 vc9 的问题

Posted

技术标签:

【中文标题】将项目从 vc6 转换为 vc9 的问题【英文标题】:Issue in convert project from vc6 to vc9 【发布时间】:2012-06-26 11:47:37 【问题描述】:

我有一个用vc6构建的项目,现在我必须将它转换成vc9。

代码中有一行

CMapStringToOb  cLogPathMap;
ofstream        tlogFile;

但是当我构建项目时出现以下错误。

错误 C2146:语法错误:缺少 ';'在标识符“tlogFile”之前

错误 C4430:缺少类型说明符 - 假定为 int。注意:C++ 不支持 default-int

当我转到 ofstream 的定义时,打开文件 iosfwd,其中 ofstream 定义为

typedef basic_ofstream<char, char_traits<char> > ofstream;

【问题讨论】:

所以您将#include 从iostream.h 更改为iostream?然后还要修复命名空间,就是std::ofstream 【参考方案1】:

以下 microsoft 建议包含 fstream: http://msdn.microsoft.com/en-us/library/e9cabcax%28v=vs.90%29.aspx

所以在你的头文件中添加以下行包含该 c++ 文件:

#include <fstream>

【讨论】:

@vikky:请注意,在 VC6 中,文件名是 fstream.h。现在它只需要fstream,根据 C++ 标准(在 VC6 制作时还没有准备好)。 如何添加 using namespace std;在您包含之后。 报错信息基本是说ofstream没有定义。 我不确定你编辑了什么。你添加了 using namespace std;像下面的例子cplusplus.com/reference/iostream/ostream/tellp 或改变第二行读取std::ofstream tlogFile;

以上是关于将项目从 vc6 转换为 vc9 的问题的主要内容,如果未能解决你的问题,请参考以下文章

从 VC6 迁移到 VC9 的编译问题

VC++ 2010:从 VC6++ 转换后显示打开对话框出错

如何将基于mpir库的VC9.0代码转换为Matlab mex函数?

将 AfxGetMainWnd 上的 C 样式系列转换从 VC6/MFC6 转换为在现代 MFC 版本(VC++2008 及更高版本)中运行

我可以将 VC9 编译的 PHP 与 Apache 一起使用吗?

VC6与VC9的区别: