vs2012 qt运行opengl程序后 报错计算机中缺失msvcp110d.dll,网上方法均无效
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了vs2012 qt运行opengl程序后 报错计算机中缺失msvcp110d.dll,网上方法均无效相关的知识,希望对你有一定的参考价值。
参考技术A 您可以参照下列提示操作下,希望我的回答对您有所帮助!~【原因分析】:文件丢失。
【简易步骤】:
【开始】—【运行】—输入【regsvr32
丢失的DLL文件】。
【解决方案:】:
1.
在下面网站中搜索下载丢失的相关dll文件;
http://www.zhaodll.com/
2.将下载的DLL文件放入系统目录下(例如:C:WindowsSystem32)如果下载后是压缩包需要解压出文件后再放到系统目录下;
3.在其他相同系统的正常电脑上拷贝一下此文件,将dll文件复制到C:WindowsSystem32,然后打开【开始】—【运行】—输入【regsvr32
丢失的DLL文件名】
4.其次如果丢失的dll文件为系统文件可以尝试使用360急救箱修复,打开急救箱选择“系统文件修复区”;
5.然后选择“扫描修复”就会自动扫描修复丢失的DLL文件。
强制 OpenGL 渲染始终在 Qt 中的相同 (Q) 线程上运行
【中文标题】强制 OpenGL 渲染始终在 Qt 中的相同 (Q) 线程上运行【英文标题】:Force OpenGL rendering to run always on same (Q)Thread in Qt 【发布时间】:2014-08-08 13:41:17 【问题描述】:我创建了一个带有 Qt GUI 的应用程序来进行图像处理。对于一部分计算,OpenGL 用于渲染转换后的图像(离屏)。一切正常。但是,当在 GUI 线程中单击按钮时,我做了所有繁重的处理。由于计算需要几秒钟,因此 GUI 变得无响应。
幸运的是,Qt 已经包含一个线程库(QThread
、QtConcurrent
等)。现在我只使用QtConcurrent::run()
和QFutureWatcher<cv::Mat>
通过回调函数异步进行计算。问题是在计算过程中,OpenGL 函数被多次调用,现在可以在不同的线程上运行连续的按钮点击。如果渲染是在与初始化 OpenGL 的线程不同的线程上完成的,则 OpenGL 不会渲染任何内容(黑屏)。当然这取决于 Qt 的线程处理。
所以我的问题是:是否有一个简单的解决方案使用当前设置(Qt 线程和 OpenGL)而不需要额外的库等来强制渲染始终在同一个线程上运行。
我知道有一个方法QObject::moveToThread()
,但我不知道在这种情况下如何使用它。 OpenGL 的东西根本不包含任何与 Qt 相关的代码或函数。那么我该如何解决这个问题呢?
我也不知道某个QThread
是否总是使用相同的底层本地线程。是这样吗?
【问题讨论】:
【参考方案1】:这是一个approach。您创建了一个线程,只要您需要,它就会一直存在,并向其中添加作业。您可以替换 QThread 或使用 std::thread。
【讨论】:
谢谢,我已经考虑过类似的解决方案。我可以通过将 OpenGL 作为任务添加到工作人员来初始化 OpenGL,然后始终将渲染任务添加到该工作人员。我只是不知道将这个解决方案与 QThreads 混合是否是个好主意......在示例中仅用 QThread 替换线程的问题可能是 QThread 只是本机线程的包装器(据我所知,也可能是它选择了 GUI 线程作为底层线程)。但是如果没有其他答案,我会尝试这个并将问题标记为已接受:) 你也可以看看这里描述的更多方法——github.com/troyane/lambdaConcurrent以上是关于vs2012 qt运行opengl程序后 报错计算机中缺失msvcp110d.dll,网上方法均无效的主要内容,如果未能解决你的问题,请参考以下文章