我试图编写一个程序,使用7-ZipDLL从内部档案文件(7z,zip等)读取文件。
这就是我目前所处的地方:
#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中构建该程序将导致以下错误:
不能在参数传递中将“QUuid*”转换为“const*”
在这种情况下应该如何正确地使用QUuid?
而且,作为一个C++和Qt新手,我还没有完全掌握模板或接口,所以总的来说,我很难完成这些第一步。如果有人可以给出一些提示,甚至是示例代码,说明如何从ZIP文件中提取图像文件(稍后将在Qt中显示),我将非常感激。
)
发布于 2010-04-21 17:59:18
必须将QUuid显式强制转换为GUID:
QUuid boo;
GUID uid = static_cast<GUID>(boo);发布于 2010-04-21 13:52:07
您必须在这两个类型之间使用一些转换。
查看Qt文档,我发现有一个GUID操作符可以将QUuid转换为Windows:http://doc.trolltech.com/4.6/quuid.html#operator-GUID
当然,这不是交叉平台。
https://stackoverflow.com/questions/2683158
复制相似问题