如何使用7-zip提供的7za.dll啊

solin 2005-01-24 02:46:51
已经尝试了N次了,没有一点头绪
网址:www.7-zip.org
7za.dll的源代码在7zip\Bundles\Format7z
调用例程在7zip\UI\Client7z
不过他那个例程太简单了,一点头绪都没有,而且doc也没有说清楚,请达人帮忙!
...全文
2022 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
solin 2005-02-13
  • 打赏
  • 举报
回复
没有人知道吗?
solin 2005-02-04
  • 打赏
  • 举报
回复
UP 一下!!!
solin 2005-02-01
  • 打赏
  • 举报
回复
我想使用他提供的动态链接库,但是无法正确的取得想要的接口,这个作者不知怎么回事,如果有一个像bzip2的手册多好啊,我看了他的论坛,问这个的不少,可没有明确的回答!
老夏Max 2005-01-24
  • 打赏
  • 举报
回复
不过上面的例子好像有问题,不能操作文件,总是在if (archive->Open(file, 0, 0) != S_OK)
这句出错。还没有完全弄懂程序!
不过经过测试发现源代码FileManager的FileManager能正确运行,呵呵,它提供的功能比较强了!呵呵,你还是先看看它的源代码吧。晚上回去我也看看!
老夏Max 2005-01-24
  • 打赏
  • 举报
回复
呵呵,楼上的你需要做什么?从源程序可以看出它涉及了COM和DLL的一般使用。Client7z的主程序段解释:
int main(int argc, char* argv[])
{
//判断参数的个数,如果参数的个数不等于2就返回
if (argc != 2)
{
printf("Use Client7z.exe file.7z");
return 1;
}
//定义一个操作DLL的封装类对象
NWindows::NDLL::CLibrary library;
//装载DLL
if (!library.Load("7za.dll"))
{
printf("Can not load library");
return 1;
}
//获得7Za.dll的导出函数CreateObject
CreateObjectFunc
createObjectFunc =
(CreateObjectFunc)library.GetProcAddress("CreateObject");
//如果没有获得成功返回,退出
if (createObjectFunc == 0)
{
printf("Can not get CreateObject");
return 1;
}
//根据模板类定义一个IInArchive的接口指针
CMyComPtr<IInArchive> archive;
//调用上面获得DLL导出函数获得这个接口指针
if (createObjectFunc(&CLSID_CFormat7z,
&IID_IInArchive, (void **)&archive) != S_OK)
{
printf("Can not get class object");
return 1;
}
//定义一个文件流指针
CInFileStream *fileSpec = new CInFileStream;
//定义一个文件流的接口指针
CMyComPtr<IInStream> file = fileSpec;
//使用Open打开参数一所指的文件
if (!fileSpec->Open(argv[1]))
{
printf("Can not open");
return 1;
}
//使用archive打开上面打开的文件
if (archive->Open(file, 0, 0) != S_OK)
return 0;
UInt32 numItems = 0;
//获得包含文件的个数
archive->GetNumberOfItems(&numItems);
//操作这些文件
for (UInt32 i = 0; i < numItems; i++)
{
NWindows::NCOM::CPropVariant propVariant;
archive->GetProperty(i, kpidPath, &propVariant);
UString s = ConvertPropVariantToString(propVariant);
printf("%s\n", (LPCSTR)GetOemString(s));
}
return 0;
}
xuzheng318 2005-01-24
  • 打赏
  • 举报
回复
帮顶,接分了!
solin 2005-01-24
  • 打赏
  • 举报
回复
加分了!
老夏Max 2005-01-24
  • 打赏
  • 举报
回复
呵呵,看看先!也关心压缩和解压缩,我也尝试一下!

16,550

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧