VC6編譯和鏈結的兩個頭疼問題

2021-04-13 04:51:46 字數 1314 閱讀 6258

周海漢 /文

為了清空,將debug目錄刪了。結果編譯時出如下錯誤:

fatal error c1083: cannot open precompiled header file: /'debug/***.pch/':

no such file or directory

怎麼搞都不行。

歸結為同樣問題的錯誤:

fatal error c1010: unexpected end of file while looking for precompiled

header directive

原來,***.pch是預編譯標頭檔案生成的檔案。在project-settings裡面,選中編譯的專案和c/c++頁,在下拉框選precompiled headers, 下面有四個選項。

1.不使用預編譯頭;

2.自動使用預編譯頭;

3.從頭檔案建立預編譯頭,指定標頭檔案;

4.使用預編譯標頭檔案stdafx.h

如果預編譯標頭檔案是stdafx.h,那麼其他的檔案都選4. 而stdafx.cpp選3,並且標頭檔案選stdafx.h

出現第乙個編譯錯誤問題時,只需要把stdafx.cpp重編譯一下,預編譯的***.pch就生成了。而出現第二個編譯問題時,需要把stdafx.h包含在檔案的最開始。

使用了靜態庫,有時出下面的錯誤:

libcd.lib(crt0dat.obj) : error lnk2005: __cinit already defined in libcmt.lib(crt0dat.obj)

libcd.lib(crt0dat.obj) : error lnk2005: _exit already defined in libcmt.lib(crt0dat.obj)

libcd.lib(crt0dat.obj) : error lnk2005: __exit already defined in libcmt.lib(crt0dat.obj)

這是庫和可執行程式使用了不同的庫所引起的衝突。在主程式中的project-settings的link頁,下拉框選input項,

在ignore librarys中增加:

libc.lib,msvcrt.lib,mfc42.lib

若是debug版,則應為:

libcd.lib,msvcrtd.lib,mfc42d.lib。

這時就可以編譯通過了。

類似問題:

error lnk2001: unresolved external symbol __afxforceexclude

這是因為選了ignore all default libraries引起的,去掉就可以了。

使用VC6編譯和使用Ogre引擎

開發網 ogre是開源的封裝了directx和opengl的3d引擎 官方主頁為 安裝 http www.mscto.com 首先解壓縮ogre.rar到你喜歡的目錄 我是放在e ogresdk 然後分別解壓ogrewin32dependencies 0.13.0.zip和dependenciess...

VC 6中的預編譯頭

vc 6中的預編譯頭 預編譯頭的概念 在很多程式中,每個原始檔都存在一些相同的部分。比如要包括相同的一些標頭檔案,而且這些標頭檔案可能很長,例如 window.h 如果用普通的方法編譯這些原始檔,對這些標頭檔案在每個原始檔中的出現都要重新編譯,作了很多重複工作。如果能將這些標頭檔案專門進行編譯,並且...

vc6能用的SDK和庫

可以用它來解析網頁,從而開發出自己特別的需求的 新瀏覽器 也可以擴充套件ie。遨遊,tt等外殼瀏覽器就屬於這類應用。qzone也屬於,新版本的qzone是採用自動化的方式去擴充套件。內含在windows sdk裡。wmencodersdk 為windows media player開發外掛程式或者呼...