最近這陣子,接了個私活,封裝一個開發包俗稱的SDK給客戶調用,查閱了不少人家的SDK,絕大部分用VC編寫,並且VC6.0居多,估計也是爲了兼容大量的XP用戶及IE瀏覽器,XP自帶了VC6.0運行庫,因此無需兼帶其餘DLL便可運行。也發現有些用匯編和C封裝的,那估計是高手才能編寫啊!那怎麼辦呢?眼看一星期的交貨期要到了,因爲本人歷來沒有寫過SDK開發包,內心那個着急啊,趕忙想出了三種處理方案。編程
方案一:windows
用本身最熟悉的QT來寫,畢竟QT也是C++的一種嘛,應該能夠和VC通用的。初步實驗,你妹啊,調用不起來,直接廢棄。瀏覽器
方案二:app
找VC高手,本身掏錢出來找人寫,客戶是上帝,那可不能耽誤呢!各大羣裏發消息,無奈高手要價過高(一個簡單的socket通訊封裝,協議都有,熟手估計半天,要價8K有點高),絕大部分答話者使用.NET和JAVA語言,這個編寫DLL確定不大適合,你想一想提供個DLL還要客戶安裝個框架,情何以堪!話說衆裏尋他千百度啊,我一個親戚就是專門搞VC開發12年啦,這點程序半天就能夠搞定的,找到以後,時間有限太忙了,沒時間寫,鬱悶!再次放棄!~框架
方案三:socket
時間一分一秒過去,真心着急啊,難不成本身用VC編寫?有想法就趕忙行動,找到了古董級別的VS6.0的安裝光盤,雙擊看到闊別七年的安裝界面,忽然之間有種熱淚盈眶的感受。老朋友啊,當年的編程入門,又記起了當年的大學,當年的圖書館,當年的初戀!ide
搞就搞,新建MFC DLL,個人媽呀,VC的命名規則實在讓人抓狂!半自動語法提示更是讓我有種自殺的衝動!安裝了visualAssistX,仍是不爽!話說編程也要帶着快樂的心情嘛,因此果斷放棄!函數
怎麼辦呢?既然QT也是C++,並且有個大名鼎鼎的WPS都是QT和MFC混合編程的,因此確定有方法的,百度谷歌,找到一個qtwinmigrate的東西,在這裏萬分感謝qtwinmigrate的做者!測試
好吧,參考裏面的例子,正式開始編寫了,咱就先來一個最初級的吧。ui
第一步:
打開qt creator,新建C++ 庫項目
依次下一步,記得在選擇須要的模塊的時候選擇QtGui模塊,若是沒有選中的話,後面編譯通不過,qmfcapp這個類裏面用了QtGui模塊中的方法。
第二步:
將多餘的文件刪除,_global.h還有其餘兩個文件刪除,由於這是QT新建DLL自帶的,咱們要寫的是能夠供其餘語言調用的DLL,我這裏的例子是隻用了一個函數和事件,沒有用到界面的東西,因此從qtwinmigrate下面的src文件夾拷貝qmfcapp.h和qmfcapp.cpp這兩個文件過來便可,以下。
第三步:
更改pro文件,改成
TARGET = qtdll
TEMPLATE = lib
CONFIG += dll
SOURCES += \
qmfcapp.cpp \
main.cpp
HEADERS +=\
qmfcapp.h
main.cpp代碼以下
選擇release編譯,在目錄下生成了一個DLL文件,這個文件就能夠供VC/C#/VB/JAVA等調用了。
第四步:編寫VC和C語言程序測試
main.c代碼以下:
運行結果如圖:
當傳入的參數爲110時,會觸發事件,返回值120。
第五步:編寫C#程序測試
運行結果:
CSDN下載地址:http://download.csdn.net/detail/feiyangqingyun/7327095