最近接触C++Primer,用vs2008编译时出现莫名其妙的错误
很久没玩2008了,无聊用vs2008编译了一个最简单的程序
#include"iostream.h"
#include"iomanip.h"
int main()
{
int i,j;
for(i=1;i<=9;i++)
{
for(j=1;j<=i;j++)
{
cout<<j<<'*'<<i<<'='<<setw(2)<<i*j<<' '<<' ';/*如果此句换成cout<<i<<'*'<<j<<'='<<i*j<<' '则输出结果有问题,为什么呢?*/
}
cout<<endl;
}
return 0;
}
首先出现1>LINK : fatal error LNK1104: 无法打开文件“libcimtd.lib” ,由于最近硬盘出现坏道,我以为是文件损坏
就找了libcimtd的库文件以及另外一个库文件 用大写命名 复制到里面,发现可以运行了,但是勉勉强强,但是iostream.h不是标准的C vs2008使用标准C,只用#include<iostream>,并使用命名空间来规范输出 同时#include<iomanip> 这个时候出现新的错误
1>正在链接...1>LINK : 没有找到 C:\Documents and Settings\Administrator\My Documents\Visual Studio 2008\Projects\Test1\Debug\Test1.exe 或上一个增量链接没有生成它;正在执行完全链接
1>LIBCMTD.lib(stdexcpt.obj) : error LNK2005: "public: __thiscall std::bad_cast::bad_cast(char const *)" (??0bad_cast@std@@QAE@PBD@Z) 已经在 Test1.obj 中定义
1>LIBCMTD.lib(stdexcpt.obj) : error LNK2005: "public: __thiscall std::bad_cast::bad_cast(class std::bad_cast const &)" (??0bad_cast@std@@QAE@ABV01@@Z) 已经在 T
查阅资料大概明白,可能是库冲突或者头文件定义不明确或者重定义,这可能是我编译的预读取路径错误,突然想起最近编写驱动的时候设置了
D:\WINDDK\3790.1830\inc\crt 以及设置了一系列默认库 可能是这些设置产生了冲突,删掉这一行,程序正确执行