1. 程式人生 > >Windows下如何使用QT編寫dll程式

Windows下如何使用QT編寫dll程式

請尊重原創作品。轉載請保持文章完整性,並以超連結形式註明原始作者“tingsking18”和主站點地址,方便其他朋友提問和指正。

Windows下如何使用QT編寫dll程式

因為QT必須有呼叫QApplicationexec方法,這樣才能產生訊息迴圈,QT的程式才可以執行。所以說如果我們使用了QT編寫了dll程式,在普通的windows程式中是不能呼叫的。在呼叫的時候會出現錯誤。當然QT提供瞭解決方法:那就是

這裡是QT官方網站對QTWinmigrate的介紹:

下面我來介紹一下使用QTWinmigrate來編寫dll的方法。

首先,我們要重寫DllMain函式:

大家都知道DllMain函式是windows動態庫的入口函式,如果在dll中使用了QTui介面前,全域性的QApplication必須首先要建立,並且應用程式必須建立EventLoop

進入到QmfcApp::pluginInstance方法中去,

我們可以看到:Qapplication被建立了出來。QmfcApp::pluginInstanc是為了保證程序中存在一個Qapplication物件,並且dll要把這個Qapplication的例項載入到記憶體中。

下面是dll中的匯出函式:

dll中的匯出函式要用extern "C"形式,QwinWidgetnative win32視窗提供堆疊等等。

這樣還沒有寫完程式。不行你拿這個程式來

qmake -project

qmake

nmake

這樣是無論如何也編譯不過的。

如果你仔細看qtwinmigrate的example的話,你就會注意到:

include(D:/qt4.4.3/qtwinmigrate-2.8-opensource/src/qtwinmigrate.pri)

編譯的時候一定要在*.pro檔案中加上這一句!切記,切記!

相關推薦

Windows如何使用QT編寫dll程式

請尊重原創作品。轉載請保持文章完整性,並以超連結形式註明原始作者“tingsking18”和主站點地址,方便其他朋友提問和指正。 Windows下如何使用QT編寫dll程式 因為QT必須有呼叫QApplication的exec方法,這樣才能產生訊息迴圈,QT的程式才可以

windowsidea編寫WordCount程式,並打jar包上傳到hadoop叢集執行(傻瓜版)

通常會在IDE中編制程式,然後打成jar包,然後提交到叢集,最常用的是建立一個Maven專案,利用Maven來管理jar包的依賴。 一、生成WordCount的jar包 1. 開啟IDEA,File→New→Project→Maven→Next→填寫Groupld和Artifactld→Ne

VS使用QT編寫dll程式

前言: 由於種種原因,我們可能需要將Win32/MFC程式與QT程式在一起互動呼叫,(比如將QT介面程式編寫成dll動態庫供Win32/MFC程式進行呼叫)。這時候就會出現問題,由於MFC和QT的訊息迴圈機制不同, QT 必須有呼叫 QApplication 的 exec

Windows QT程式釋出

方法1:利用QT自帶打包工具 1、新建資料夾,把編譯好的exe檔案放入該資料夾 2、使用QT下的命令列 3、進入該exe所在檔案,執行windeployqt xxx.exe,若出現找不到命令的情況 4、搜尋windeployqt.exe所在路徑,配置環境變數 5、重啟終端,進入exe檔案所在目錄,

QT編寫程式Windows作業系統中移植到樹莓派中編譯並執行

     開發環境    Win10 + QT5.6  和 樹莓派 1.在Win10中用QT新建一個 Qt  Widgets Application 專案    2 .找到工程目錄 3 .將整個

WindowsQt程式打包成

打包目的: QT寫的程式可執行檔案需要拷貝到其他沒有QT環境的windows裝置上執行。 第一步:構建 工具:QT+qmake+MinGW 我的QT程式是qmake寫的,在專案—>編輯構建配置選擇Release模式,然後構建執行,確認程式沒有錯誤。 第二步:依賴

windows動態庫dll和靜態庫編譯和使用問題

window下動態庫dll和靜態庫lib問題 windows下動態庫dll和靜態庫lib的聯絡和區別,以及示例匯出個動態庫 https://blog.csdn.net/lifei092/article/details/79630273 問題: 1,生成dll時,同時生成lib是做

Java專案怎麼打包成在windows的可安裝程式

一:將專案檔案匯出成jar檔案: 1,找到我們完成的專案程式碼,匯出:(右鍵單擊—>Export) 2,選擇java —>JAR file 下一步: 3,第一個不勾選,下一步: 4,選擇java類中有main方法的作為入口:下一步:

WindowsQT呼叫python指令碼

.pro檔案 #------------------------------------------------- # # Project created by QtCreator 2018-10-13

windows Qt-Mingw32(32bit) opencv4原始碼編譯

1. 首先下載Qt工具http://download.qt.io/archive/qt/,我的版本是qt 5.10.1,直接一直下一步安裝 下載CMake工具鏈 https://cmake.org/do

windowsQT配置pthread,解決main.obj:-1: error: LNK2019: 無法解析的外部符號 __imp_pthread_create,該符號在函式 main 中被引用

QT中使用msvc2017_64編譯時,本來不支援pthread。但是又想用pthread來寫程式,就在網上各種查詢辦法,不過好像都不太可以,會報錯: main.obj:-1: error: LNK20

windowsQt連結PostgreSQL

由於官方的windows下的qt只有32位的,因此PostgreSQL相應的也只能安裝32位的。 由於qt的包含的路徑中不能有空格,因此PostgreSQL的安裝路徑中不能有空格。 我下載的是10.6版本的PostgreSQL,點此下載。 qt工程中的設定: 1、包含標頭檔案:#in

windowsQT如何通過ODBC連線達夢資料庫

1.首先需要保證你的QT編譯器位數和DM資料庫位數一致,否則無法連線成功。 2.配置資料來源。 資料來源在控制面板中的管理工具裡面,如下圖。 如果資料庫是32位的就用32位的資料來源,64位的

linuxQt關閉第三方程式

環境:ubuntu16.04           Qt5.9最近在開發過程中,需要通過Qt來開啟和關閉第三方應用,使用QProcess類返回的PID和使用top命令檢視到的程序ID不一樣,不知道是不是用錯了類方法。後來在網上查到可以用pkill來關閉程序。pkill命令可以按

windowsQT+SQL server開發環境配置注意事項

踩過無數坑之後,終於將環境配置成功,現將注意事項記錄下來,網上能找到的一般資訊略過。 1、qt環境中確保已經安裝連結相關驅動庫。 qt安裝路徑中,C:\Qt\Qt5.8.0\5.8\mingw53_32\plugins\sqldrivers,存在相應的dll。 2、確保

1.WindowsQT+VS2010環境搭建

(1)安裝VS2010 2.配置環境變數 在"我的電腦"上單擊右鍵,進入"屬性",然後開啟"環境變數"對話方塊 在PATH環境變數中新增:"D:\Qt\Qt5.0.0\5.0.0\msvc201

Windows Qt的編譯過程

    Qt確實是一個非常優秀的開發工具,學習Qt從瞭解Qt的編譯開始。在本例項中將介紹Qt編譯的過程,並穿插UI的使用。 一、利用designer製作一個介面,儲存為login.ui 二、命令列下,使用uic –oui_login.hlogin.ui命令將login.

windowsLIB和DLL的區別與使用

共有兩種庫: 一種是LIB包含了函式所在的DLL檔案和檔案中函式位置的資訊(入口),程式碼由執行時載入在程序空間中的DLL提供,稱為動態連結庫dynamic link library。 一種是LIB包含函式程式碼本身,在編譯時直接將程式碼加入程式當中,稱為靜態連結庫static link library。 共

windowssocket開發tcp程式 簡單例子

Windows下的簡單tcp例子。 程式碼均在VC6.0下除錯過。 伺服器程式碼: //TCP server //listen port 9102 //receive string and display it //Visual C++ 6.0 #include &l

WindowsARM Linux應用程式開發環境搭建說明

這是因為工作寫的一個文件,主要是我們開發人員都不會Linux不會vi也不會命令列,於是研究了一下Windows系統除錯ARM Linux程式的辦法,在這共享一下。1. 概述嵌入式Linux系統的應用程式開發,編譯器一般是gcc,一般都說是要在Linux虛擬機器中進行開發和編譯。本文提供了一種能夠在Wind