在MFC中使用Qt生成的DLL

2021-06-15 08:13:32 字數 1506 閱讀 1346

)這個練習是基於mfc生成的程式遷移到qt的例子,這個程式通過微軟visual studio的mfc應用程式嚮導生成。 

入門(getting started)(

注:這個例子在檔案qtwinmigrate-2.8-opensource\examples\mfc\step1中,而且這例子要用vc6.0或者用qt creator才能開啟)

先把工程檔案 qtmfc1.dsp 匯入到vs的工作空間,並且確保這個vs工程可以正常的編譯和執行。(在step1中沒有找到qtmfc1.dsp,倒是有個qtmfc.dsp)

這個mfc程式有乙個使用dll提供的對話方塊介面,這個很簡介面很簡單:dll匯入乙個名字是showdialog的c語言風格的函式,這個函式把整個視窗作為父控制代碼。這個dll以模態方式顯示它的對話方塊,並且在函式返回後解除安裝掉。

else}

如果這個dll被正確載入並且showdialog()被正確匯出,那麼匯出的函式就會被呼叫,否則呼叫顯示預設的mfc關於對話方塊。

外掛程式擴充套件

(這個工程生成的dll就是上個例子用的那個)

(注:這個例子在檔案qtwinmigrate-2.8-opensource\examples\qtdll中,可以用qt creator 編譯生成dll,也可以新增到vs新建的工程當中去,已經測試過,可以正常使用)

為了使用這個plugininstance函式和跟它有相關的qt類,我們需要包含一些標頭檔案。

#include
#include
#include
//用dllmain()函式就是為了使用hinstance,作為qwinwidget的引數

bool winapi dllmain( hinstance hinstance, dword dwreason, lpvoid /*lpvreserved*/

)

然後dll的介面就通過匯出c語言風格的showdialog函式來實現。qwinwidget類可以在這個時候使用,用於存放對話方塊,並且關聯上qt 對話方塊。

extern "c" __declspec(dllexport) bool showdialog( hwnd parent )       //這個是匯出的函式
(個人總結:我已經測試過qtwinmigrate-2.8-opensource\examples\qtdll目錄下的工程可以在qt creator上可以生成dll和lib檔案,生成的dll在其它vs工程上完全正常使用。所以如果以後要再用qt開發vs下用的dll,完全可以把這個作為模板,dllmain()內的**不用動,只是更換掉要匯入的函式即可。完整的**如下圖:

在共享DLL中使用MFC 和在靜態庫中使用MFC

使用vs2008,在專案屬性中有一項mfc的使用,有三種設定 1.使用標準windows庫 2.在共享dll中使用mfc 3.在靜態庫中使用mfc 第一種顧名思義。第二種指的是打包時一些mfc的dll的內容沒有被包含在exe檔案中,所以exe檔案較小,但是執行時要求系統中要有相關的dll檔案。第三種...

在共享DLL中使用MFC 和在靜態庫中使用MFC

使用vs2008,在專案屬性中有一項mfc的使用,有三種設定 1.使用標準windows庫 2.在共享dll中使用mfc 3.在靜態庫中使用mfc 第一種顧名思義。第二種指的是打包時一些mfc的dll的內容沒有被包含在exe檔案中,所以exe檔案較小,但是執行時要求系統中要有相關的dll檔案。第三種...

在共享Dll和靜態庫中使用MFC的區別

使用vs編譯mfc工程是在專案屬性中有一項mfc的使用,有三種設定 1.使用標準windows庫 2.在共享dll中使用mfc 3.在靜態庫中使用mfc 第一種顧名思義。第二種指的是打包時一些mfc的dll的內容沒有被包含在exe檔案中,所以exe檔案較小,但是執行時要求系統中要有相關的dll檔案。...