關於部落格
  • 117911

    累積人氣

  • 1

    今日人氣

    0

    訂閱人氣

NoDefaultLib - 忽略程式庫, VC2010 in Code Blocks

      由於照著各 Google 出來的 wxWidgets+Code::Blocks+gcc 在我這台 PC 一直不成功, 不知道是不是 x64 的關係, 畢竟查到的資料都有點歷史了呢. 照著下面這篇走:

Link, wxWidgets 2.9.4 + Visual C++ 2010 + Code  Blocks   t7378017

對 wxWidgets 所編譯出的 lib 會有下面的錯誤

vc make code: # nmake -f makefile.vc BUILD=debug UNICODE=1

Code::Blocks Build log:
LIBCMTD.lib(dbgheap.obj) : error LNK2005: __heap_alloc 已在 LIBCMT.lib(malloc.obj) 中定義過了
LIBCMTD.lib(dbgheap.obj) : error LNK2005: __recalloc 已在 LIBCMT.lib(recalloc.obj) 中定義過了
LIBCMTD.lib(dbgheap.obj) : error LNK2005: __msize 已在 LIBCMT.lib(msize.obj) 中定義過了
LIBCMTD.lib(dbghook.obj) : error LNK2005: __crt_debugger_hook 已在 LIBCMT.lib(dbghook.obj) 中定義過了
LIBCMTD.lib(isctype.obj) : error LNK2005: __isctype_l 已在 LIBCMT.lib(isctype.obj) 中定義過了
LIBCMTD.lib(isctype.obj) : error LNK2005: __isctype 已在 LIBCMT.lib(isctype.obj) 中定義過了
LINK : warning LNK4098: 預設的程式庫 'LIBCMT' 與其他使用的程式庫衝突,請使用 /NODEFAULTLIB:library
LINK : warning LNK4098: 預設的程式庫 'LIBCMTD' 與其他使用的程式庫衝突,請使用 /NODEFAULTLIB:library
binDebugwxApp1.exe : fatal error LNK1169: 找到有一或多個已定義的符號
Process terminated with status 1169 (0 minute(s), 1 second(s))
7 error(s), 2 warning(s) (0 minute(s), 1 second(s))

     顯然是討厭的 LIBCMTD 跟 LIBCMD 又嘎再一起了(怒!), 因為這個專案是 debug 版本, 所以沒有 D 的 LIBCMT 是多餘的. 以往在 Visual Studio 可以如下從專案設定中去忽略特定 lib
 

經過一個下午的搜尋根嘗試, Code::Blocks 似乎沒有相似的功能... 最後參考 Visual Studio 每個屬性命令的方式成功了!!(Code::Blocks rev9677)

1. 開啟建置設定視窗
Project(menu) > Build option

2. 加入忽略指令
Linker Settings(tab) > Other linker options > /NODEFAULTLIB:"LIBCMT.lib"

如此一來就完成了!!

See also:

*. Link, Note of wxWidgets
*. sort() 排序
*. rand()函數的應用
*. Note of class(20.1-20.6)
*. 如何在 Visual C++ 中建立一個可執行 cpp 檔案(Visual stduio 2010)
*. Windows Forms 與 DirectShow
*. General Error C101008d 與防毒軟體迷思
*. CFileDialog Assertion Failed
*. error LNK2019 筆記

參考連結:

Link, MSVC與CRT的恩怨情仇    猴子靈藥 [Monkey Potion]
Link, Falldog的程式戰場  Windows上建構wxWidgets的編譯環境
Link, wxWidgets 2.9.4 + Visual C++ 2010 + Code  Blocks   t7378017
Link, NODEFAULTLIB (忽略程式庫) MSDN

相簿設定
標籤設定
相簿狀態