我在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. ActiveQt可的COM应用程序的例子 - COM服务器在Windows注册表(Qt4.7.4)
- 4. 使用JWrapper构建Java应用程序
- 5. 使用SignalR构建Web应用程序
- 6. 使用Spring构建Java应用程序
- 7. 使用ANT构建AIR应用程序
- 8. 使用PREEMPT_RT构建RT应用程序
- 9. 使用Gradle构建Python应用程序
- 10. 使用COM捕获Word应用程序
- 11. 关于为使用COM的应用程序构建前端的提示
- 12. 用MinGW构建ActiveMQ-CPP?
- 13. 构建Angular2应用程序
- 14. MonoTouch应用程序构建
- 15. 构建cpp应用程序
- 16. 构建Python应用程序
- 17. 构建Android应用程序
- 18. 使用MinGW在Windows上构建RabbitMQ-C
- 19. 使用MSYS和MinGW构建Windows的ffmpeg
- 20. 使用MinGW在Windows上构建wxWidgets
- 21. 使用MinGW在Windows上构建lxml
- 22. 使用自动构建构建网站应用程序TFS 2010
- 23. 使用TFS 2015构建和部署Web应用程序构建
- 24. 分析COM应用程序?
- 25. Java Web应用程序构建程序初学者使用LAMP
- 26. 使用pyqtdeploy构建程序
- 27. 使用Buck构建系统构建使用Kotlin编写的Android应用程序
- 28. MinGW控制台应用程序
- 29. 创建Android应用程序构建
- 30. 使用Maven构建多个体系结构SWT应用程序
该应用程序链接正常。这是启动MIDL的后链接阶段,这是问题 - MIDL需要cl.exe(MS编译器)。 – Rob 2010-06-29 12:07:33