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」。