Qt 不能运行错误集合 常见错误集合

一、缺少 qt platform 依赖库;

qt.qpa.plugin: Could not find the Qt platform plugin "windows" in ""
This application failed to start because no Qt platform plugin could be initialized. Reinstalling the application may fix this problem.

少平台 dll 库,如windows 平台

将 类似 你的路径 D:\ProgramData\Qt\5.12.4\msvc2017_64\plugins\platforms

拷贝到 运行目录;其实用到的是 qwindows.dll或 qwindowsd.dll

二 、缺少 qt sqldrive依赖库

WARNING: QSqlDatabase: QSQLITE driver not loaded

少 sqldrive

将 类似 你的路径 D:\ProgramData\Qt\5.12.4\msvc2017_64\plugins\sqldrivers

拷贝到 运行目录;

以上二种也可以通过cmake 实现

指定一组要导入的定制插件(注意:此宏仅从静态Qt构建导入插件。在共享版本上,无效。)

qt5_import_plugins(target
                   [INCLUDE plugin ...]
                   [EXCLUDE plugin ...]
                   [INCLUDE_BY_TYPE plugin_type plugin ...]
                   [EXCLUDE_BY_TYPE plugin_type])
指定一组要导入的定制插件。可选参数:INCLUDE,EXCLUDE,INCLUDE_BY_TYPE,和EXCLUDE_BY_TYPE,可多次使用。

此CMake命令在Qt 5.14中引入。

    INCLUDE -可用于指定要导入的插件列表。
    EXCLUDE -可用于指定要排除的插件列表。
    INCLUDE_BY_TYPE -可用于覆盖要为特定插件类型导入的插件列表。
    EXCLUDE_BY_TYPE-可用于指定要排除的插件类型;那么就不会导入该类型的插件。

Qt提供插件类型,例如imageformats,platforms,和sqldrivers。

如果qt5_import_plugins()未调用,那么目标会自动链接到一组默认的插件,针对目标链接到的每个Qt模块。有关更多信息,请参见target_link_libraries。

每个插件都带有一个C ++存根文件,该文件会自动初始化该插件。因此,任何链接到插件的目标都会将此C ++文件添加到其中SOURCES。

注意:此宏仅从静态Qt构建导入插件。在共享版本上,无效。

例子

add_executable(myapp main.cpp)
target_link_libraries(myapp Qt5::Gui Qt5::Sql)
qt5_import_plugins(myapp
    INCLUDE Qt5::QCocoaIntegrationPlugin
    EXCLUDE Qt5::QMinimalIntegrationPlugin
    INCLUDE_BY_TYPE imageformats Qt5::QGifPlugin Qt5::QJpegPlugin
    EXCLUDE_BY_TYPE sqldrivers
)

在上面的代码片段中,执行程序myapp发生了以下情况:

    将Qt5::QCocoaIntegrationPlugin导入到myapp中。
    该Qt5::QMinimalIntegrationPlugin插件不会自动导入到myapp中。
    的默认插件列表imageformats被覆盖为仅包括Qt5 :: QGifPlugin和Qt5 :: QJpegPlugin。
    所有sqldrivers插件均不会自动导入。

三、windows 平台 ,缺少 VC 运行库

可以下载这个安装

VisualC++AIOv2019.05.21-C++文档类资源-CSDN下载

四、 could not be loaded: Cannot load library 提示缺少依赖库

could not be loaded: Cannot load library 如果是你自己编译出的库不能被 loaded ,还是少依赖,具体还是要查;

如指明了缺少文件名,可以根据目录就找到相应依赖库拷贝过来就可以;

windows 平台可以通过 log 和 depends.exe来查;

linux 平台可以通过命令行查依赖

1.查看依赖的库: objdump -x xxx.so | grep NEEDED

2.查看可执行程序依赖的库: objdump -x 可执行程序名 | grep NEEDED

3.查看缺少的库: ldd xxx.so

缺少库存有两种解决方案

1,加入到环境变量 ,如果是文件夹适合此方法;

2,直接拷贝到当前目录;

还有一种情况是当前库的所在目录不对,移动到合适的文件夹,此文件夹含有它依赖的库,

但不能拷贝它依赖的库,否则就存在二份,也会有问题;

Five: error LNK2001: 无法解析的外部符号 "public: virtual struct QMetaObject const * __cdecl CTWindowAdvisor::metaObject(void)const

这种情况是因为 CTWindowAdvisor.h 头文件没有加入到  MOC_H_FILES 列表中,或者是 CTWindowAdvisor.h 忘记添加  Q_OBJECT

小结

总之具体问题,还需要具体的分析,不断遇到问题,不能解决问题,不断的成长;

Qt 不能运行错误集合 常见错误集合_第1张图片

你可能感兴趣的:(QT,QT,常见错误集合)