cl编译器不进行符号修饰
① 初学C++,碰到的编译问题 hello.obj : error LNK2019: 无法解析的外部符号
在#inlcude下面加上
#pragma comment(lib,"user32.lib")
ps:
你这种学习方法是正确的。不光要学会用IDE,还要明白后面的原理。
windows程序最基本的dll包括kernel32.dll,user32.dll等
这些dll是IDE帮你自动连接的。
但是到了命令行得你自己做:
1)通过#pragma通知连接器
2)在命令行指定要连接的lib(具体怎么做你去查一查,就当学习了)
② vs2013怎么在命令行使用cl编译
1. “cl不是可用的内部命令或可执行程序”
----原因:环境变量Path没有设置好。
----解决:在环境变量Path中添加VC的bin目录。Path= D:\Microsoft Visual Studio 9.0\VC\bin。在D:\Microsoft Visual Studio 9.0\VC\ce\bin下还有其他一些编译器,看名字是交叉编译用的
2.“mspdb80.dll无法找到”
----原因:vs2008的VC\bin目录下缺少msobj80.dll、mspdb80.dll、mspdbcore.dll、mspdbsrv.exe这四个文件。
----解决:在D:\Microsoft Visual Studio 9.0\Common7\IDE下复制这四个文件到VC\bin。
3.解决以上问题以后,可以直接在命令行的任何目录下编译C/C++文件了。可是又出现新状况:
“fatal error: cannot open include file”
----原因:vs2008未设置include和lib的环境变量。
----解决:
3.1在环境变量里添加变量INCLUDE,包含进VC\Include和C:\Program Files\Microsoft SDKs\Windows\v6.0A\Include(这个是安装vs时自动安装在C盘的)两个目录
INCLUDE=D:\Microsoft Visual Studio 9.0\VC\include; C:\Program Files\Microsoft SDKs\Windows\v6.0A\Include
3.2添加变量LIB,包含进VC\lib和C:\Program Files\Microsoft SDKs\Windows\v6.0A\Lib(这个也是安装vs时自动安装在C盘的)两个目录:
LIB=D:\Microsoft Visual Studio 9.0\VC\lib; C:\Program Files\Microsoft SDKs\Windows\v6.0A\Lib
4.提示:fatal error LNK1104: 无法打开文件“kernel32.lib”,(在IDE里面运行没有问题,因为IDE中采用了另外的封装了库)
----原因:vs2008未设置include和lib的环境变量。
----解决:在环境变量里添加变量LIB,C:\Program Files\Microsoft SDKs\Windows\v6.0A\Lib
或者将kernel32.lib直接到vc的lib目录下也可以
至此,问题终于解决了,hoho~o(∩_∩)o...
【Tips】
1.使用-GX选项时,2005的编译器会提示GX已过时,使用-EHsc代替
cl : Command line warning D9035 : option 'GX' has been deprecated and will be re
moved in a future release
cl : Command line warning D9036 : use 'EHsc' instead of 'GX'
2.环境变量可以通过“我的电脑右键->高级->环境变量”设置。当然也有其它方法,欲知详情请网络之。
【Ref】
http://blog.163.com/danshiming@126/blog/static/109412748201312703225352/(在命令行界面使用vs2005的cl )
http://hi..com/fymzone/blog/item/fdac1bfb9ba55f65034f5689.html(用vs2005编译器cl在控制台下编译)
http://hi..com/vanta/blog/item/f62035a80ec521b5cb130c3b.html(在cmd中键入cl执行编译时会出现mspdb80.dll无法找到的情况)
③ 求大神看看,刚学c语言,说的是newline in constant 执行 cl.exe 时出错. 下面是我的编程,请问哪里错
这个错误一般来说是由于,符号引起的如果是你直接复制的有可能其中包含全角符号,全角符号编译器是无法编译的建议手打所有的符号,比如分好,因为全角分好和半角分好基本没有区别,输入法这里设置 点开搜狗的那个橘色S选上月亮 一般默认是半角的
④ 用c语言编程序,遇到无法解析的外部符号,求解决方法
使用cl编译的时候,不会自动帮你链接常用的系统库,所以,需要你手动指定需要的库文件。指定库文件时,可以使用参数/link
库文件,也可以直接写库文件名。
MessageBox函数族(编译器会根据字符集自动判断是使用后缀是A还是W的函数)在库文件User32.lib中,加上就行了,命令行:
cl
G:\1.c
User32.lib
注意我的源文件是在G盘下的,内容和你的一样。编译结果:
⑤ cl 编译器使用
打开cmd,切换到helloworld.cpp所在路径,键入
cl helloworld.cpp
即生成helloworld.obj和helloworld.exe
别忘了,把环境变量PATH设置成:
C:\Program Files\Microsoft Visual Studio\Common\Tools\WinNT;C:\Program Files\Microsoft Visual Studio\Common\MSDev98\Bin;C:\Program Files\Microsoft Visual Studio\Common\Tools;C:\Program Files\Microsoft Visual Studio\VC98\bin;
如果你的VC不是安装在C盘,那么PATH值请做出相应调整。
⑥ matlab mex .c文件出现 cl.exe 中有内部编译器错误问
编译文件的时候后面要加上需要编译的文件的名字,
貌似就是这个问题:C:\PROGRA~1\MATLAB\R2007B\BIN\MEX.PL: Error: No file names given.
没有给出文件名字。
⑦ Qt 编译不了,怎么解决啊,'cl' 不是内部或外部命令,也不是可运行的程序 或批处理文件。
没装 Visual Studio 自然用不了 cl 编译器。
如果确定装了 Visual Studio ,就手动设置编译器选项,选择正确的路径
如果真的没装 Visual Studio ,也没必要装(毕竟 Visual Studio 体积不小),mingw-w64体积小得多,而编译器的优化能力甚至更出色(下载地址: http://sourceforge.net/projects/mingw-w64/ )
⑧ C语言程序编译老是CL.exe错误 怎么回事
1、一般这个问题都是在win7和vista下面用VC6的问题,尝试下面几种方法,如果不行,就重新找一个VC版本吧2、具体步凑:一: “CL.exe”是VC使用真正的编译器(编译程序),其路径在“VC根目 录 /VC98/Bin”下面,可以到相应的路径下找到这个应用程序。因此问题可以按照以下方法解决:打开vc界面 点击VC“TOOLS(工 具)”—“Option(选择)”—“Directories(目录)”重新设置“Excutable Fils、Include Files、Library Files、Source Files”的路径。很多情况可能就一个盘符的不同(例如VC装在C,但是这些路径全部在D),改过来就OK了。
⑨ c语言初学者求救!执行 cl.exe 时出错.是什么意思
格式错了,cl.exe 是控制 Microsoft C 和 C++ 编译器以及链接器的工具。cl.exe 只能在支持 Microsoft Visual Studio 的操作系统中运行。 编译器产生通用对象文件格式 (COFF) 对象 (.obj) 文件。
#include<stdio.h>这是c语言头文件
而你设定的文本属于c++类型C:UsersAdministratorDesktopCpp1.cpp
C:UsersAdministratorDesktopCPP1.c这个格式才对
(9)cl编译器不进行符号修饰扩展阅读:
命令行下cl.exe编译链接的问题及解决方法
1、在windows命令行下,输入cl,若系统提示“'cl'不是内部或外部命令,也不是可运行的程序或批处理文件。”
说明VS没有安装或者环境变量设置不正确。本机是已经安装了VS2010的,所以需要设置一下环境变量。在系统变量的Path路径下添加如下内容:“E:Program FilesMicrosoft Visual Studio 10.0VCin”(结合VS的安装路径自行设置)。
2、在命令行输入cl时,出现“丢失mspdb100.dll”的问题时
需要把“E:Program FilesMicrosoft Visual Studio 10.0Common7IDEmspdb100.dll”复制到“E:Program FilesMicrosoft Visual Studio 10.0VCin”下面。这样问题就得到解决了。
3、出现错误“fatal error LNK1104: cannot open file “kernel32.lib””
解决方法是在环境变量中新建的LIB变量中增加值:“C:Program FilesMicrosoft SDKsWindowsv7.0ALib”。