昨天收到外面新給的關於人臉識別的庫,linux是.so文件,windows是提供的安裝程序並且文檔是說明將其中主要的dll作為COM組件進行再使用
之前沒有接觸過COM組件的相關變成,昨天查了一些資料。
發現一個博文
https://www.cnblogs.com/zhehan54/p/5625416.html
這個博主應該是翻譯了國外的一系列博文,關於COM組件的說明很詳細,大家如果有興趣可以學習以下
里面有對於COM組件的使用的幾種方法介紹和例子,很適合學習使用
另外在Qt中其實也有自帶的對於這種COM組件的辦法
Qt中提供了dumpcpp這個工具可以將你需要使用的DLL文件轉出對應的.h和.cpp文件。
項目中可以直接使用這個頭文件。
我開始是在Qt5.5版本去找這個工具,但是沒有,5.7版本有。
我的路徑類似於E:\QT\Qt5.9.0\5.9\msvc2015\bin\dumpcpp.exe
需要通過windows的控制台才能調用。
在控制台中輸入dumpcpp,可以獲得幫助文檔,里面還有提供的examples
我用的第一條,輸出的結果是在當前文件目錄會有ieframe.h和ieframe.cpp文件。
另外,還嘗試了QAxObject這個Qt的類,但是發現導不出來。
以下是嘗試的代碼

QAxObject objo = new QAxObject("{fc3899cf-1dda-4f3d-917c-aa7a7385320b}"); QString doc = objo.generateDocumentation(); QFile outFile("D:/debug.html"); outFile.open(QIODevice::WriteOnly|QIODevice::Append); QTextStream ts(&outFile); ts<<doc<<endl; outFile.close();
new里面給的是CLSID,這個ID我是從dumpcpp導出來的頭文件獲得的。
eg:代碼里面有個小錯誤,objo應該指針 * objo,不然導不出html文件,從dumpcpp中導出的CLSID是正確的,在注冊表\HKEY_CLASSES_ROOT\下面的CLSID也能找到。