vc6 0編譯時使用MFC靜態庫遇到的問題

2022-07-09 22:03:17 字數 1014 閱讀 1556

今天需要把專案靜態鏈結的可執行程式到其它機器上執行,這個專案是用vc6.0寫的,結果使用mfc靜態庫時發現編譯出現下面的錯誤:

--------------------configuration: upload - win32 debug--------------------linking...

nafxcwd.lib(afxmem.obj) : error lnk2005:

"void * __cdecl operator new(unsigned int)

" (??2@yapaxi@z) already defined in libcmtd.lib(new

.obj)

nafxcwd.lib(afxmem.obj) : error lnk2005:

"void __cdecl operator delete(void *)

" (??3@yaxpax@z) already defined in

libcmtd.lib(dbgdel.obj)

debug/upload.exe : fatal error lnk1169: one or more multiply defined symbols found

error executing link.exe.

test.exe - 3 error(s), 0 warning(s)

這個錯誤說的是庫nafxcwd.lib和庫libcmtd.lib都提供了同名的函式,但是直接去掉libcmtd.lib是不行的,因為它是c的庫。發生這個問題是因為mfc的庫和c的庫發生了衝突,也就是說要先鏈結nafxcwd.lib,再鏈結libcmtd.lib。可以通過下面來設定:

先分別把nafxcwd.lib和nafxcwd.lib ignore掉,然後在object/library modules中按nafxcwd.lib、nafxcwd.lib順序進行設定,再進行編譯就可以了通過了。

在VC 6 0中建立靜態庫

本文介紹用vc建立static lib,並且如何使用自己建立的庫。1 新建乙個win32 static library工程,預設 ok finish 即可 2 新建檔案add.cpp和add.h到此工程 add.h檔案如下 include int add int x,int y add.cpp檔案內...

VC 6 0使用感想

進公司這兩三周,一直在使用vc 6.0,以前在學校的時候,很瞧不起這個整合開發環境,覺得它又土又不好用,對它嗤之以鼻。但是使用這段時間以來,真心覺得任何一款整合開發工具都有其存在的道理,都很博大精神,如果你稍不留神,就會被其中的陷阱繞進去。下面就介紹一下 我使用vc 6.0 時遇到的問題,以及犯下的...

VC6 0下編譯boost庫的regex

今天要用到正規表示式,用網上的方法,直接使用命令 nmake vc6.mak 提示 nmake 不是內部或外部命令,也不是可執行的程式 上網搜尋了一下,說執行命令 call c program files microsoft visual studio vc98 bin vcvars32.bat 重...