アーカイブファイル(7z、zipなど)内からファイルを読み取るために7-ZipDLLを使用するプログラムを作成しようとしています。
これが私が今のところいるところです:
#include <QtCore/QCoreApplication>
#include <QLibrary>
#include <QUuid>
#include <iostream>
using namespace std;
#include "7z910/CPP/7zip/Archive/IArchive.h"
#include "7z910/CPP/7zip/IStream.h"
#include "MyCom.h"
// {23170F69-40C1-278A-1000-000110070000}
QUuid CLSID_CFormat7z(0x23170F69, 0x40C1, 0x278A, 0x10, 0x00, 0x00, 0x01, 0x10, 0x07, 0x00, 0x00);
typedef int (*CreateObjectFunc)(
const GUID *clsID,
const GUID *interfaceID,
void **outObject);
void readFileInArchive()
{
QLibrary myLib("7z.dll");
CreateObjectFunc myFunction = (CreateObjectFunc)myLib.resolve("CreateObject");
if (myFunction == 0) {
cout << "CreateObject resolve failed!";
return;
}
else {
cout << "CreateObject resolved";
}
CMyComPtr<IOutArchive> outArchive;
myFunction(&CLSID_CFormat7z, &IID_IOutArchive, (void **)&outArchive);
}
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
readFileInArchive();
return a.exec();
}
Qt Creatorでそれを構築しようとすると、次のエラーが発生します。
引数の受け渡しで「QUuid*」を「constGUID*」に変換できません
このコンテキストでQUuidを正しく使用するにはどうすればよいですか?
また、C ++とQtの初心者である私は、テンプレートやインターフェイスをまだ十分に理解していないため、全体として、これらの最初のステップを実行するのに苦労しています。たとえば、ZIPファイルから画像ファイルを抽出する方法(後でQt GUIに表示される*)に関するヒントやサンプルコードを提供していただければ幸いです。
- 現在の私の主な目標は、画像ファイル(PNG、JPGなど)を含むアーカイブファイルを選択し、それらのファイルを1つずつGUIに表示するためのGUIを備えたプログラムを作成することです。要するに、QtベースのCDisplayExです。