下面这个c++程序,为什么在VC6.0中可以运行成功,但是在vs2008中运行会出错

#include <iostream>
using namespace std;
class Base1
{
public:
void display()const{cout<<"Base1::display()"<<endl;}

};
class Base2:public Base1
{
public:
void display()const{cout<<"Base2::display()"<<endl;}
};
class Derived:public Base2
{
public:
void display()const{cout<<"Derived::display()"<<endl;}
};
void fun(Base1 *ptr)
{
ptr->display();
}
int main()
{
Base1 base1;
Base2 base2;
Derived derived;
fun(&base1);
fun(&base2);
fun(&derived);
return 0;
}
错误提示是这样的。1>------ 已启动生成: 项目: 类型兼容规则实例, 配置: Debug Win32 ------
1>正在链接...
1>MSVCRTD.lib(crtexew.obj) : error LNK2019: 无法解析的外部符号 _WinMain@16,该符号在函数 ___tmainCRTStartup 中被引用
1>F:\C++练习\类型兼容规则实例\Debug\类型兼容规则实例.exe : fatal error LNK1120: 1 个无法解析的外部命令
1>生成日志保存在“file://f:\C++练习\类型兼容规则实例\类型兼容规则实例\Debug\BuildLog.htm”
1>类型兼容规则实例 - 2 个错误,0 个警告
========== 生成: 成功 0 个,失败 1 个,最新 0 个,跳过 0 个 ==========

汗,LZ至少把错误写出来吧,我在VS2008中试了,但是没有看到错误。追问

1>MSVCRTD.lib(crtexew.obj) : error LNK2019: 无法解析的外部符号 _WinMain@16,该符号在函数 ___tmainCRTStartup 中被引用
1>F:\C++练习\类型兼容规则实例\Debug\类型兼容规则实例.exe : fatal error LNK1120: 1 个无法解析的外部命令
1>生成日志保存在“file://f:\C++练习\类型兼容规则实例\类型兼容规则实例\Debug\BuildLog.htm”
1>类型兼容规则实例 - 2 个错误,0 个警告
字数限制,前后删了一点。

追答

因为你的代码是一段控制台程序代码,入口是main函数,而这个提示则是说找不到WinMain函数,而这个函数应该是win32程序的入口。怀疑你的工程不是一个控制台程序,在项目属性设置中找到“链接器”-->“系统”-->“子系统”,看一下是否是控制台,若不是则改为控制台试试。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-08-21
如果你说出报错的错误提示可能还有办法帮你
第2个回答  2011-08-21
难道你是将这个文件直接用vs2008打开的吗?
2008没用过,不过2005和2003的项目默认代码和6.0的不一样。
1你可以用2008新建一个win32控制台的helloworld项目,之后用你这个文件的代码替换包含main函数的cpp文件中的头文件包含以下的部分。
2如果你这个文件是6.0项目的一个文件的话,你可以找到文件夹下扩展名为dsw的文件,选择用2008版打开,会提示你生成一个对应的2008项目,之后就应该可以运行了。
相似回答