首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Qt中正确使用QUuid?(7-ZipDLL使用问题(QLibrary、QUuid GUID转换、接口))

在Qt中正确使用QUuid?(7-ZipDLL使用问题(QLibrary、QUuid GUID转换、接口))
EN

Stack Overflow用户
提问于 2010-04-21 13:15:24
回答 2查看 3.4K关注 0票数 0

我试图编写一个程序,使用7-ZipDLL从内部档案文件(7z,zip等)读取文件。

这就是我目前所处的地方:

代码语言:javascript
复制
#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中显示),我将非常感激。

  • 我目前的主要目标是用GUI编写一个程序,用于选择包含图像文件(PNG、JPG等)的归档文件,并在GUI中一次显示这些文件。基于Qt的CDisplayEx (简称.

)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-04-21 17:59:18

必须将QUuid显式强制转换为GUID:

代码语言:javascript
复制
QUuid boo;
GUID uid = static_cast<GUID>(boo);
票数 1
EN

Stack Overflow用户

发布于 2010-04-21 13:52:07

您必须在这两个类型之间使用一些转换。

查看Qt文档,我发现有一个GUID操作符可以将QUuid转换为Windows:http://doc.trolltech.com/4.6/quuid.html#operator-GUID

当然,这不是交叉平台。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2683158

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档