手动和动态加载标准qt插件

手动和动态加载标准qt插件,qt,jpeg,Qt,Jpeg,任何人都可以给出一个例子,如何加载qjpeg或任何其他标准的QT插件手动。请给出一个代码示例,而不是qt页面的链接,因为我已经知道以下事实: 我没有将qt链接为静态库。 我知道如何部署标准qt插件这是自动部分 2.1. 对于qjpeg,您可以将qjpeg4.dll复制为./imageformats/qjpeg4.dll。作为基础目录 你的应用程序。 但是我想加载并使用qjpeg库。 如 这不会打印jpg,并且jpg图像无法读取和写入。也许如果有人在这里添加更多的内容,它就会起作用。或者我完全错了

任何人都可以给出一个例子,如何加载qjpeg或任何其他标准的QT插件手动。请给出一个代码示例,而不是qt页面的链接,因为我已经知道以下事实:

我没有将qt链接为静态库。 我知道如何部署标准qt插件这是自动部分 2.1. 对于qjpeg,您可以将qjpeg4.dll复制为./imageformats/qjpeg4.dll。作为基础目录 你的应用程序。 但是我想加载并使用qjpeg库。 如


这不会打印jpg,并且jpg图像无法读取和写入。也许如果有人在这里添加更多的内容,它就会起作用。或者我完全错了。

我还没有这样做,但这里有一个有根据的猜测,你加载插件可能是正确的,但如果不按照正常的方式,QImageReader实际上并不知道插件是否可用。如果您确实需要显式地加载插件,您可能可以将QPlugiLoader::instance的结果强制转换为QImageIOPlugin,并使用QIOImageHandler读取您的JPG,但看起来您必须放弃使用QImageReader

QPluginLoader loader("qjpeg4.dll");
if (loader.instance()) {
    cout << "ok" << endl;
} else {
    cout << "fail" << endl << loader.errorString().toStdString() << endl;
}


QList<QByteArray> list = QImageReader::supportedImageFormats();
for (int i = 0; i < list.size(); ++i) {
    f << list.at(i).constData() << std::endl;
}