使用Visual Studio编译7z源码
fangmaobin:
如何使用7z代码实现分卷压缩(比如分卷大小为10M)?
不分卷压缩,使用的是CArchiveUpdateCallback的函数:
CMyComPtr outArchive; //取IOutArchive 接口
if (createObjectFunc(&CLSID_CFormat7z, &IID_IOutArchive, (void **)&outArchive) != S_OK)
{
PrintError("Can not get class object");
return 1;
}
CArchiveUpdateCallback *updateCallbackSpec = new CArchiveUpdateCallback; //压缩时 会调用的回调函数
CMyComPtr updateCallback(updateCallbackSpec);
updateCallbackSpec->Init(&dirItems);
HRESULT result = outArchive->UpdateItems(outFileStream, dirItems.Size(), updateCallback);
updateCallbackSpec->Finilize(); //压缩
if (result != S_OK)
{
PrintError("Update Error");
return 1;
}
for (int i = 0; i < updateCallbackSpec->FailedFiles.Size(); i++) //打印失败文件
{
PrintNewLine();
PrintString((UString)L"Error for file: " + updateCallbackSpec->FailedFiles[i]);
}
if (updateCallbackSpec->FailedFiles.Size() != 0)//判断有几个失败的文件
return 1;
return 1;
}
如何才能分卷压缩呢?请指点!
|