我尝试在Windows 7上使用Active Qt在ActiveX组件中嵌入一些matplotlib
数字,这些数字已成功嵌入常规Qt项目中的matplotlib
个数字。
使用Qt文档中的Simple和Menus示例作为参考,我设法在ActiveX组件中嵌入Python解释器并运行构建QWidget
的一些基本Python代码使用PyQt5
的对象。
一切正常,我可以使用PyQt构建ActiveX组件接口的一部分,并在使用Python和c ++等创建的小部件之间发送信号,没有任何问题。我甚至可以使用FigureCanvas
后端创建matplotlib PyQt5
对象。但是,只要我尝试嵌入一个已添加了子图的FigureCanvas
,我的ActiveX组件就会崩溃,并出现一般的Visual C ++运行时错误:
应用程序已请求Runtime以不正常的方式终止它。请联系应用程序的支持团队以获取更多信息。
更糟糕的是,我无法运行调试版本,因为libpython
的调试版本需要构建所有编译的扩展模块依赖项的调试版本,而且我还没有运气好从头开始构建numpy
/ scipy
。
有没有人对可能导致此次崩溃的原因有任何想法?我想知道它是否与COM对象或Python GIL使用的线程模型有关,但我对这些主题知之甚少。欢迎任何建议。
答案 0 :(得分:0)
问题解决了。我以下的示例创建了一个进程外的ActiveX服务器。切换到进程内服务器可以停止崩溃。
来自Qt docs:
要构建进程内服务器,请使用如下的.pro文件:
TEMPLATE = lib QT += axserver CONFIG += dll DEF_FILE = qaxserver.def RC_FILE = qaxserver.rc ...