我在Windows上使用Qt 4.6.3和MinGW來構建Qt應用程序,現在需要將COM接口添加到我的應用程序中。我啓用了ActiveQt,但因爲丟失了MIDL編譯器的副本,導致後鏈接錯誤。我下載了最新的MS Windows SDK的副本,其中包括MIDL,但現在MIDL抱怨它無法找到cl.exe。我可以得出的唯一結論是,您只能使用MS編譯器構建ActiveQt應用程序,而我寧願避免這種情況。是否可以與MinGW合作?或者我運氣不好?使用MinGW構建ActiveQt(COM)應用程序
回答
使用MS編譯器和工具似乎是實現這種工作的唯一可靠方法。
那麼,你可以使用MinGW來構建ActiveQt,但在其上使用一堆COM的東西可能是不可能的,因爲它可能會或可能不會出現在MinGW中。一些想法:
使用任何MS SDK工具使用MinGW是不行的(例外是mingw.org + DXSDK應該工作的大部分時間)。
您確定在編譯時鏈接了所有必需的庫嗎?如果你不顯示確切的錯誤信息,我無法提供更多幫助。
mingw-w32/w64 project試圖提供一個完整的「Windows SDK for GCC」;它可能包含您正在查找的庫/文件。他們提供了一個x64和x86編譯器,以及相當不錯的DX支持。我對他們的COM沒有經驗,但我相信它會比mingw.org更完整。您可以隨時聯繫論壇或郵件列表中的開發人員,他們非常有幫助。
你可以試試midl的wine實現,widl。有關在Windows上構建的信息,請參閱Wine wiki page。
如果您想快速運行,請獲取wine-prgs-0.9.14-mingw.zip並查看它是如何工作的。
我同意Rob的第二篇文章:使用mingw構建ActiveX對象是一件非常糟糕的事情。 Mingw在ActiveX方面存在一些問題:https://bugzilla.mozilla.org/show_bug.cgi?id=203299和https://qt.gitorious.org/qt/qt/merge_requests/2710。我殺了整整一天發現它。改用MSVS的Qt,一切都會好的。 ;)
我已經解決了這個問題,接下來的方式:
了QtCreator,Msys2和VS2015安裝社區。
啓動Qt Creator的與批處理腳本:
@echo off
call "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" x86 8.1
setlocal
set MSYSTEM=MINGW32
set MSYS2_PATH_TYPE=inherit
start "" "C:\msys64\usr\bin\mintty" -i /msys2.ico -e /usr/bin/bash --login -c "/c/Qt/Tools/QtCreator/bin/qtcreator.exe"
exit /b 0
我啓動QtCreator出Msys2 envioronment的,因爲它提供了構建第三方在我的項目需要非標準的Unix工具。 因此理論上這並不是強制要求Msys2。
請注意:不使用WinSDK 10.0(或以上版本),因爲它沒有PATH變量中的midl.exe。
這樣做會創建PATH環境變量與Qt Creator的最高優先級(所以你會使用gcc從Qt安裝),Msys2下一個(所以你可以使用標準的Unix工具)和MSVC和WinSDK 8.1在最後的地方(所以而建立你會發現midl編譯器)。
現在我成功構建dll並將其傳遞給midl形式的WinSDK,但至今我仍然試圖在系統中註冊它。
- 1. 如何使用cmake和MinGW使用資源文件構建Win32應用程序?
- 2. 使用MinGW構建Boost 1.45
- 3. 使用mingw構建Qt 5.0
- 4. 在構建MinGW後Qt應用程序中斷
- 5. ActiveQt可的COM應用程序的例子 - COM服務器在Windows註冊表(Qt4.7.4)
- 6. 使用angularjs構建應用程序
- 7. 使用HTML構建Android應用程序
- 8. 使用ANT構建AIR應用程序
- 9. 使用Spring構建Java應用程序
- 10. 使用Gradle構建Python應用程序
- 11. 使用PREEMPT_RT構建RT應用程序
- 12. 使用SignalR構建Web應用程序
- 13. 使用Maven構建OSGi應用程序
- 14. 使用Maven構建OSGI應用程序
- 15. 使用ZendFramework構建應用程序
- 16. 使用JWrapper構建Java應用程序
- 17. 使用COM捕獲Word應用程序
- 18. 使用COM自動化應用程序
- 19. 關於爲使用COM的應用程序構建前端的提示
- 20. 用mingw構建boost C++
- 21. 用mingw構建Qt 5.2.0 4.8.1
- 22. 用MinGW構建ActiveMQ-CPP?
- 23. MonoTouch應用程序構建
- 24. 構建cpp應用程序
- 25. 構建Python應用程序
- 26. 構建Angular2應用程序
- 27. 構建Android應用程序
- 28. 使用自動構建構建網站應用程序TFS 2010
- 29. 使用TFS 2015構建和部署Web應用程序構建
- 30. BindToMoniker Com應用程序
該應用程序鏈接正常。這是啓動MIDL的後鏈接階段,這是問題 - MIDL需要cl.exe(MS編譯器)。 – Rob 2010-06-29 12:07:33