无法加载平台插件“windows”。可用平台有:错误

时间:2013-06-28 14:24:10

标签: visual-studio qt qt5 visual-studio-addins

我在Visual Studio Qt插件的帮助下使用Visual Studio 2012 32位和Qt5 SDK创建了Qt项目。我正在使用Windows 7终极操作系统。

我创建了QApplication GUI Project,它基本上使用了以下库:

qtmain.lib
Qt5Core.lib
Qt5Gui.lib
Qt5Network.lib
Ws2_32.lib
Winhttp.lib
Winmm.lib
Qt5Widgets.lib
Qt5PlatformSupport.lib
imm32.lib

我已成功构建应用程序二进制文件而没有任何错误。

我正在尝试在测试计算机Windows 7桌面上运行此应用程序,其中包含以下dll:

icudt51.dll
icuin51.dll
icuuc51.dll
libEGL.dll
libGLESv2.dll
Qt5Core.dll
Qt5Network.dll
Qt5GUI.dll
Qt5Widgets.dll
qwindows.dll [copied from msvc2012\plugins\platform folder ]

我收到了错误:

  

无法加载平台插件“windows”。可用平台是:在尝试运行应用程序时。

我会错过什么?如何让它在Windows平台上运行?请帮我解决这个问题。

我之前关注过这个问题的链接。但他们都没有解决我的问题。我缺少什么配置?

4 个答案:

答案 0 :(得分:2)

平台插件dll需要放入平台子文件夹然后才能工作。

答案 1 :(得分:2)

另一种解决方案:在主函数或其他任何内容中,调用QCoreApplication :: addLibraryPath()。一个简单的例子:

std::ifstream configurationStream("whateverNameYouWant.conf");
std::stringstream configurationText;
configurationText << configurationStream.rdbuf();
auto ct = configurationText.str();

if (!ct.empty())
    QCoreApplication::addLibraryPath(QString::fromStdString(ct));

这里我从我自己的发明的.conf文件加载路径,这样路径就不会硬编码到我的程序中。自从我发明了这个文件以来,我控制了它的格式;在这种情况下它只包含路径。我使用的实际路径是C:/qt5/qtbase/plugins;该目录包含platforms/qwindows.dll和其他此类文件。可以根据安装了一个Qt文件的位置调整自己案例的路径。

我想也可以使用标准qt.conf文件,使用Qt指定的格式,自动加载一些特殊路径(包括此插件路径),而无需向您添加特殊代码为此目的的自己的计划:http://doc.qt.io/qt-5/qt-conf.html ...但无论出于何种原因,我还没有设法让它工作。也许我犯了一些简单的错误,我不知道。

答案 2 :(得分:0)

另一种解决方案是向QApplication对象(或启动应用程序)添加参数。 例如,您想从C:\ test \ platforms.dll加载qwindow.dll,您可以使用以下代码实例化QApplication对象:

int ac = 4;
static char * av[] = {"myappli.exe","C:\\\\path\\to\\myappli.exe","-platformpluginpath","C:\\\\test"};
m_qApp = new QApplication(ac, av);
小心,QTCore dll不能进入目录C:\ test(加载dll冲突)

答案 3 :(得分:0)

如果指定的工作目录与可执行文件所在的工作目录不同,则无论插件是否存在,都会失败。

因此,在这种情况下,请使用post build事件复制文件。

并在:

配置属性 - &gt;调试 - &gt;命令

指定可执行文件的完整路径。

这是在VStudio 2008上测试的。