1. 程式人生 > >【VS開發】MFC執行時庫與debug、release版本之間的配置關係

【VS開發】MFC執行時庫與debug、release版本之間的配置關係

參考內容: 

前段時間從網上下來一個有意思的程式碼,用VS2010開啟時需要將工程轉換為2010的工程,轉化後卻出現了編譯不通過的問題,類似這樣的錯誤:c:\program files\microsoft visual studio 10.0\vc\atlmfc\include\afxver_.h(81): fatal error C1189: #error :  Please use the /MD switch for _AFXDLL builds。之前一直沒注意過MFC庫使用方式需要與執行時庫一致的問題,感覺很是奇怪,後來搜尋了一下才知道有這樣的問題。所以在此簡要的說明一下這樣的問題,以給大家提供一個參考。

        VS2010編譯器要求MFC庫使用方式需要與執行時庫需一致,否則會出現錯誤或者警告。

        如果使用MFC動態庫,則要使用動態的執行時庫;如果使用MFC靜態庫,則要使用靜態的執行時庫。同時,如果工程是Debug配置,則要用除錯版本的執行時庫;如果是Release配置,則要呼叫非除錯版本的執行時庫,具體對應關係,如下所示:(D-DLL,d-Debug)

        1、在共享 DLL 中使用 MFC(執行時庫肯定要用動態的執行時庫)

          Debug配置  -->  Multi-threaded Debug DLL(/MDd)

          Release配置  -->  Multi-threaded DLL(/MD)

       2、在靜態庫中使用 MFC(執行時庫肯定要用靜態的執行時庫)

          Debug配置  -->  Multi-threaded Debug(/MTd)

          Release配置  -->  Multi-threaded(/MT)

相關推薦

VS開發MFC執行debugrelease版本之間配置關係

參考內容:  前段時間從網上下來一個有意思的程式碼,用VS2010開啟時需要將工程轉換為2010的工程,轉化後卻出現了編譯不通過的問題,類似這樣的錯誤:c:\program files\microsoft visual studio 10.0\vc\atlmfc\inc

VS開發程序執行緒及堆疊關係的總結

二、堆和棧的理論知識 2.1申請方式 stack: 由系統自動分配。例如,宣告在函式中一個區域性變數 int b; 系統自動在棧中為b開闢空間 heap: 需要程式設計師自己申請,並指明大小,在c中malloc函式 如p1 = (char *)malloc(10); 在C++中用new運算子 如p2 = (c

VS開發C++執行緒安全

我們是多麼渴望各種C++類都是多執行緒安全的,然而一旦涉及到物件間的互動,這樣的渴望可能就只能是奢望了。下面,我們以設計一個雙向鏈結點為例,看看要使其多執行緒安全將會帶來一些什麼問題。 class DoublyLinedNode{        DoublyLinedNod

VS開發VS編譯提示"已經在 LIBCMT.lib(new.obj) 中定義uafxcw.lib"解決辦法

  錯誤  1  error LNK2005: "void * __cdecl operator new(unsigned int)" ( [email protected]@Z )

VS開發Visual Studio 2015 無法解析的外部的符號 __vsnwprintf_s

IDE:Visual Studio 2015 作業系統:win 10   問題: 編譯的時候可能會遇到 ERROR LNK2019:無法解析的外部的符號 __vsnwprintf_s,或者是_sscanf,_sscanf_s等等一系列形如這樣的函式   疑

VS開發/FORCE(強制檔案輸出)

/FORCE:[MULTIPLE|UNRESOLVED] 備註 即使引用了符號但未定義或多次定義符號,/FORCE 選項也通知連結器建立有效的 .exe

VS開發開發最小化到托盤的功能

在VC++中,想實現最小化MFC程式的時候,最小化到系統托盤,需要呼叫NOTIFYICONDATA類 下面我們就來講解一下如何簡單實現一個系統托盤我們以對話方塊程式為列 第一步:在Dlg類中//定義一個NOTIFYICONDATA類的成員變數,用來設定托盤 NOTIFYIC

VS開發影象處理直方圖均衡平臺直方圖

首先需要說明的是,如果你說的是一道完整的題目,則這道題目沒有唯一解,因為題目中沒有說明原始影象的灰度級數(比如原始影象是16個灰度級的,或者是32個灰度級的,等等)。為了給你提供一個解題思路,現在人為假設原始影象是16個灰度級的,其它灰度級的解法類似。 1、影象的灰度直方圖求法為: (1)先計算影象中各個灰度

VS開發關於記憶體洩漏的除錯

沒想到造成洩漏的原因是由於儲存資料的執行緒因為事件阻塞在那裡,此時要關閉OnClose的時候,這個掛起的執行緒爆出了記憶體洩漏,所以在關閉視窗之前,需要SetEvent(m_hSaveDataEvent);來把掛起的執行緒啟用,之後的釋放就不再出現記憶體洩漏了。

VS開發malloc申請記憶體錯誤分析

每個程序會有4G的虛擬地址空間, malloc得到的的地址都是虛擬地址, 並且當malloc的時候, 作業系統並不會將實際的記憶體分配給程序的, 所以malloc只會佔用程序自身的虛擬地址空間。我以前也做過申請記憶體的測試,並且寫了一個短文:作業系統: Redhat Lin

VS開發使用 NuGet 管理專案庫

NuGet 使用 NuGet 管理專案庫 無論多麼努力,Microsoft 也沒辦法提供開發人員所需要的每一個庫。 雖然 Microsoft 在全球的員工人數接近 90,000,但全球的開發人員數以百萬計。 指望 Microsoft 滿足每一個人的需求是不現實的,也不可想像。 因此,開發人員

VS開發影象處理RGB各種格式

RGB格式 RGB組合格式 名字 RGB組合格式 描述 此格式用來匹配PC圖形幀快取。每個畫素佔據8,16,24或32個位,他們都是組合畫素格式,其意為在記憶體中所有畫素資料都是相鄰排列的。當使用這些格式之一時,驅動應該上報顏色空間為V4L2_COLORSPACE_S

VS開發C/C++開發傳遞雙重指標申請記憶體,典型用法

指標引數是如何傳遞記憶體的? 如果函式的引數是一個指標,不要指望用該指標去申請動態記憶體。如下示例中,Test函式的語句GetMemory(str, 100)並沒有使str獲得期望的記憶體,str依舊是NULL,為什麼? void GetMemory(char *p, int num) {  p = (c

VS開發使用CTabView分割多頁卡視窗

一般書中介紹的是使用CSplitterWnd來拆分視窗實現多檢視,CSplitterWnd中的CreateClient可以儲存其建立的pCreateContext指標,以便子檢視共享Document。這我用一篇文章詳細說明。CTabView建立多檢視的好處在於簡單的標籤切

VS開發熟悉和修改VS2015的常用快捷鍵為eclipse風格!用著舒服!

用習慣了eclipse,平時也會交叉的用一用VS2015。兩個IDE之間的快捷鍵差距實在太大了,有時候經常按錯。無奈之下,只好把VS2015的快捷鍵修改成和eclipse一樣,這樣就省心舒服了!!正常情況下VS2008,VS2010,VS2013,VS2015,VS2017的

VS開發免費打工仔:一個完善的ActiveX Web控制元件教程

作者 David Marcionek. 翻譯 免費打工仔 這個教程可以幫助你快速開發一個ActiveX控制元件。其中將要講解關於ActiveX開發的一些基礎概念,諸如方法(method)、屬性(propertiy)和事件(event),以及ActiveX控制元件和網頁

C/C++開發VS開發win32位x64位下各型別長度對比

64 位的優點:64 位的應用程式可以直接訪問 4EB 的記憶體和檔案大小最大達到4 EB(2 的 63 次冪);可以訪問大型資料庫。本文介紹的是64位下C語言開發程式注意事項。 1. 32 位和 64 位C資料型別 32和64位C語言內建資料型別,如下表所示:

VS開發C++ opencv Mat基礎

1.Mat基礎 在計算機記憶體中,數字影象是已矩陣的形式儲存的。OpenCV2中,資料結構Mat是儲存影象畫素資訊的矩陣,它主要包含兩部分:矩陣頭和一個指向畫素資料的矩陣指標。 矩陣頭主要包含,矩陣尺寸、儲存方法、儲存地址和引用次數等。 矩陣頭的大小是一個常數,不會隨著影象的大小而改變,但是儲存影象畫素資料

VS開發CTabView多頁卡介面

The CTabView class simplifies the use of the tab control class (CMFCTabCtrl ) in applications that use MFC's document/view architecture. class CT

Linux開發Linux下jpeglib的安裝詳解

echo "please add following lines in you /etc/profile"   echo "("   echo " tip:"   echo " you can add these lines in a file named /etc/profile.jpeg,"   echo