環境:vs2015+qt5.8git
http://blog.csdn.net/zuoyefeng1990/article/details/70885220github
網上的教程一邊倒的使用qtwinmigrate,qt團隊提供了這個項目,先download下來 https://github.com/qtproject/qt-solutions.gitc#
使用2015的qt插件導入qtwinmigrate文件夾下的qtwinmigrate.pro文件,很意外的一次性編譯經過了,由於還下載過一些示例代碼,可是一直報頭文件找不到的錯誤,多是qt版本差別致使的。.net
編譯完成後,winhost和winwidget兩個項目做爲啓動項時,都能正常運行,準備階段完成插件
獨立開工程編寫完c#的參考程序以後,調用qtdialog.dll,編譯經過,可是運行報錯, [DllImport("qtdiaolog.dll")] 改成絕對路徑 [DllImport(@"d:****\qtdiaolog.dll")] 依舊報錯,「試圖加載格式不正確的程序。 (異常來自 HRESULT:0x8007000B)」 感受比較眼熟,網上搜了一下,是編譯環境形成的,qt的工程輸出的是x64,而c#工程是AnyCpu,將c#輸出改成x64以後,錯誤成了 沒法加載 DLL xxxxxxxx找不到指定的模塊。 (異常來自HRESULT:0x8007007E)。 這下看似很明確了,dll沒找到,因而切換相對路徑和絕對路徑又試了一次,結果仍是不行,上網繼續查找,發現多是庫依賴形成dll加載失敗debug
打開Depends.exe,打開dll,發現QT的幾個dll,因而將QT5CORED.DLL,QT5GUID.DLL,QT5WIDGETSD.DLL(debug模式下)和qtdiaolog.dll所有拷到exe所在文件夾目錄,運行成功。blog