VS2010的一个问题!

时间:2023-01-19 17:43:43
大家好,我试着用了下VS2010,但就是连一个简单的HelloWorld都无法运行成功。可以编译通过,链接时出现下面错误:

1>Test10.obj : error LNK2001: 无法解析的外部符号 "__declspec(dllimport) public: __int64 __thiscall std::basic_streambuf<char,struct std::char_traits<char> >::sputn(char const *,__int64)" (__imp_?sputn@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAE_JPBD_J@Z)
1>Test10.obj : error LNK2001: 无法解析的外部符号 "__declspec(dllimport) public: void __thiscall std::basic_ostream<char,struct std::char_traits<char> >::_Osfx(void)" (__imp_?_Osfx@?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEXXZ)
1>Test10.obj : error LNK2001: 无法解析的外部符号 "__declspec(dllimport) public: __int64 __thiscall std::ios_base::width(__int64)" (__imp_?width@ios_base@std@@QAE_J_J@Z)
1>Test10.obj : error LNK2001: 无法解析的外部符号 "__declspec(dllimport) public: __int64 __thiscall std::ios_base::width(void)const " (__imp_?width@ios_base@std@@QBE_JXZ)
1>C:\Documents and Settings\Zhangyf\my documents\visual studio 2010\Projects\Test10\Release\Test10.exe : fatal error LNK1120: 4 个无法解析的外部命令

我的C++程序如下:
#include "stdafx.h"
#include <iostream>
using namespace std;

int main(int argc, char* argv[])
{
std::cout<<"Hello"<<std::endl;
return 0;
}


另外,我的机子上安装了VC6.0、VS2008、VS2010。在其他两个版本上都可以,为什么在VS2010上就出错呢?是不是库有冲突啊?非常感谢各位!!!

24 个解决方案

#1


确定下你用的是VS2010下的VC++,然后确定向导有没有建对,是不是控制台程序!

#2


跑不起VS2010的漂过...

#3


貌似是你的软件安装的问题

#4


引用 1 楼 zhzxlc_06 的回复:
确定下你用的是VS2010下的VC++,然后确定向导有没有建对,是不是控制台程序!

是建的Win32 Console程序。但就是出错啊。。。

#5


我用了个多月了,没出现过类似问题

#6



lthyxy:      error LNK2001:,去查查这个。不行就卸载了吧。

#7


这是个win32程序啊,那就是VC了,所以才有#include "stdafx.h"?干嘛用的

#8


检查下你的源文件名是.c还是.cpp

#9


楼主的IDE有问题啊,重装下试试。

#10


引用 8 楼 lf426 的回复:
检查下你的源文件名是.c还是.cpp

是.cpp啊。

#11


我平时不建win32 console程序,而是直接建一个空工程,然后在里面加文件,这样它不会自动生成一些预编译文件。我也从来不用那些文件。而且这样比较*,我可以选择加入不同语言的文件进去。
你试一下建空工程,不用#include "stdafx.h"看看行不行。

#12


引用 11 楼 naturemickey 的回复:
我平时不建win32 console程序,而是直接建一个空工程,然后在里面加文件,这样它不会自动生成一些预编译文件。我也从来不用那些文件。而且这样比较*,我可以选择加入不同语言的文件进去。
你试一下建空工程,不用#include "stdafx.h"看看行不行。

非常感谢你的提醒。我试了下,但还是不行。编译能通过,链接仍然是那些错误。

#13


        轻轻地我走了正如我轻轻地来`~

#14


引用 7 楼 zj294006 的回复:
这是个win32程序啊,那就是VC了,所以才有#include "stdafx.h"?干嘛用的

看来你没有用过VS系列的IDE,所以不要误导LZ.


LZ好像是建错工程了。

#15


引用 11 楼 naturemickey 的回复:
我平时不建win32 console程序,而是直接建一个空工程,然后在里面加文件,这样它不会自动生成一些预编译文件。我也从来不用那些文件。而且这样比较*,我可以选择加入不同语言的文件进去。
你试一下建空工程,不用#include "stdafx.h"看看行不行。


偶也是

#16


我也没问题啊

#17


引用 14 楼 chinazhangjie 的回复:
引用 7 楼 zj294006 的回复:
这是个win32程序啊,那就是VC了,所以才有#include "stdafx.h"?干嘛用的

看来你没有用过VS系列的IDE,所以不要误导LZ.


LZ好像是建错工程了。

我没有建错工程。是Win32 Console Application,用空项目添加文件或者默认项目的方式,都会出现链接错误,编译没有出错。

#18


你的源文件中是否有 stdafx.cpp 这个文件? 火速删了它试试。 还有什么stdver.h ,应该也没用。

#19


忽略我上边的胡说八道吧,我试了,咱俩不是一个问题……

#20


你让周围用过的人帮你看下,比在这里问强多啦,没亲眼看到问题,咋知道是怎么回事呀,但肯定不是大问题~

#21


C:\Documents and Settings\Zhangyf\my documents\visual studio 2010\Projects\Test10\Release\Test10.exe 

这是Release。。。lz试试Debug模式。。。

#22


顺便说一句,我从来不用#include "stdafx.h"

#23


解决了!
原来是VC++目录的问题。VS2010从已安装的VS2008自动继承了所有的目录,但还是不够。我在
C:\Documents and Settings\用户名\Local Settings\Application Data\Microsoft\MSBuild\v4.0\Microsoft.Cpp.Win32.user.props
中给VS2010的总目录重新设置了下,现在运行完全正确!!

非常感谢大家的跟帖,O(∩_∩)O谢谢大家!!

#24


结贴给分哈。。。

#1


确定下你用的是VS2010下的VC++,然后确定向导有没有建对,是不是控制台程序!

#2


跑不起VS2010的漂过...

#3


貌似是你的软件安装的问题

#4


引用 1 楼 zhzxlc_06 的回复:
确定下你用的是VS2010下的VC++,然后确定向导有没有建对,是不是控制台程序!

是建的Win32 Console程序。但就是出错啊。。。

#5


我用了个多月了,没出现过类似问题

#6



lthyxy:      error LNK2001:,去查查这个。不行就卸载了吧。

#7


这是个win32程序啊,那就是VC了,所以才有#include "stdafx.h"?干嘛用的

#8


检查下你的源文件名是.c还是.cpp

#9


楼主的IDE有问题啊,重装下试试。

#10


引用 8 楼 lf426 的回复:
检查下你的源文件名是.c还是.cpp

是.cpp啊。

#11


我平时不建win32 console程序,而是直接建一个空工程,然后在里面加文件,这样它不会自动生成一些预编译文件。我也从来不用那些文件。而且这样比较*,我可以选择加入不同语言的文件进去。
你试一下建空工程,不用#include "stdafx.h"看看行不行。

#12


引用 11 楼 naturemickey 的回复:
我平时不建win32 console程序,而是直接建一个空工程,然后在里面加文件,这样它不会自动生成一些预编译文件。我也从来不用那些文件。而且这样比较*,我可以选择加入不同语言的文件进去。
你试一下建空工程,不用#include "stdafx.h"看看行不行。

非常感谢你的提醒。我试了下,但还是不行。编译能通过,链接仍然是那些错误。

#13


        轻轻地我走了正如我轻轻地来`~

#14


引用 7 楼 zj294006 的回复:
这是个win32程序啊,那就是VC了,所以才有#include "stdafx.h"?干嘛用的

看来你没有用过VS系列的IDE,所以不要误导LZ.


LZ好像是建错工程了。

#15


引用 11 楼 naturemickey 的回复:
我平时不建win32 console程序,而是直接建一个空工程,然后在里面加文件,这样它不会自动生成一些预编译文件。我也从来不用那些文件。而且这样比较*,我可以选择加入不同语言的文件进去。
你试一下建空工程,不用#include "stdafx.h"看看行不行。


偶也是

#16


我也没问题啊

#17


引用 14 楼 chinazhangjie 的回复:
引用 7 楼 zj294006 的回复:
这是个win32程序啊,那就是VC了,所以才有#include "stdafx.h"?干嘛用的

看来你没有用过VS系列的IDE,所以不要误导LZ.


LZ好像是建错工程了。

我没有建错工程。是Win32 Console Application,用空项目添加文件或者默认项目的方式,都会出现链接错误,编译没有出错。

#18


你的源文件中是否有 stdafx.cpp 这个文件? 火速删了它试试。 还有什么stdver.h ,应该也没用。

#19


忽略我上边的胡说八道吧,我试了,咱俩不是一个问题……

#20


你让周围用过的人帮你看下,比在这里问强多啦,没亲眼看到问题,咋知道是怎么回事呀,但肯定不是大问题~

#21


C:\Documents and Settings\Zhangyf\my documents\visual studio 2010\Projects\Test10\Release\Test10.exe 

这是Release。。。lz试试Debug模式。。。

#22


顺便说一句,我从来不用#include "stdafx.h"

#23


解决了!
原来是VC++目录的问题。VS2010从已安装的VS2008自动继承了所有的目录,但还是不够。我在
C:\Documents and Settings\用户名\Local Settings\Application Data\Microsoft\MSBuild\v4.0\Microsoft.Cpp.Win32.user.props
中给VS2010的总目录重新设置了下,现在运行完全正确!!

非常感谢大家的跟帖,O(∩_∩)O谢谢大家!!

#24


结贴给分哈。。。