同一个程序 Visual Studio IDE和cl编译的结果不同

chenwk891 2013-01-27 11:21:53
今天想试着在命令行模式下,用cl编译一个最简单的Hello World程序(如下)。
#include <iostream>

using namespace std;

int main(){
cout<<"Hello World!"<<endl;
return 0;
}

在Visual Studio里面编译毫无问题,但是用cl编译(输入的命令是cl -GX ex1.cpp)却出现了一个link错误:
LINK:fatal error LNK1104: cannot open file 'libcpmt.lib'

这是为什么呢?cl编译不是应该和IDE编译出来的结果一样吗?
...全文
182 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2013-01-29
  • 打赏
  • 举报
回复
引用 3 楼 ForestDB 的回复:
LZ可知道IDE编译的时候,加了多少选项?
可以参考IDE编译的时候生成的.plg文件:
<html>
<body>
<pre>
<h1>Build Log</h1>
<h3>
--------------------Configuration: tmp - Win32 Debug--------------------
</h3>
<h3>Command Lines</h3>
Creating temporary file "C:\DOCUME~1\ADMINI~1.000\LOCALS~1\Temp\RSP5B.tmp" with contents
[
/nologo /MDd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /D "_AFXDLL" /Fo"Debug/" /Fd"Debug/" /FD /c
"C:\tmp\zzz.c"
]
Creating command line "cl.exe @C:\DOCUME~1\ADMINI~1.000\LOCALS~1\Temp\RSP5B.tmp"
Creating command line "link.exe /nologo /subsystem:console /pdb:none /debug /machine:I386 /force /out:"Debug/tmp.exe"  .\Debug\zzz.obj "
<h3>Output Window</h3>
Compiling...
zzz.c
Linking...



<h3>Results</h3>
tmp.exe - 0 error(s), 0 warning(s)
</pre>
</body>
</html>
ForestDB 2013-01-28
  • 打赏
  • 举报
回复
LZ可知道IDE编译的时候,加了多少选项?
chenwk891 2013-01-28
  • 打赏
  • 举报
回复
我运行vcvars32.bat出现这样的错误 ERROR:Cannot determine the location of the VS Common Tools folder. 见我之前的一个帖子 http://bbs.csdn.net/topics/390358498
northwesternwind 2013-01-27
  • 打赏
  • 举报
回复
用cl的话需要事先设置环境变量。 vs 2008的话在菜单里面找visual studio command prompt 或者vs安装后目录里面有一个vcvars32.bat之类的先执行下

64,642

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧