lzma не удалось создать objectfunc для rar с использованием c ++ - PullRequest
0 голосов
/ 30 мая 2019

Не удалось создать объект при передаче

rar (clsid = 23170F69-40C1-278A-1000-000110030000)

lzma sdk lzma1900 . тестирование dll (7zra.dll) компилируется vs2008 nmake in "lzma1900\CPP\7zip\Bundles\Format7zR".

Как скомпилировать lzma для извлечения файла .rar? любая идея высоко ценится.

все нормально, передавая 7z(23170F69-40C1-278A-1000-000110070000).

DEFINE_GUID(CLSID_CFormatRar,
  0x23170F69, 0x40C1, 0x278A, 0x10, 0x00, 0x00, 0x01, 0x10, 0x03, 0x00, 0x00);

#define kDllName "7zra.dll"

int MY_CDECL main(int numArgs, const char *args[])
{
NT_CHECK

  NDLL::CLibrary lib;
  if (!lib.Load(NDLL::GetModuleDirPrefix() + FTEXT(kDllName)))
  {
    PrintError("Can not load 7-zip library");
    return 1;
  }

  Func_CreateObject createObjectFunc = (Func_CreateObject)lib.GetProc("CreateObject");
  if (!createObjectFunc)
  {
    PrintError("Can not get CreateObject");
    return 1;
  }

//the code context extracts from lzma1900\CPP\7zip\UI\Client7z\Client7z.cpp
//always failed if set rar
CMyComPtr<IInArchive> archive;
    if (createObjectFunc(&CLSID_CFormatRar, &IID_IInArchive, (void **)&archive) != S_OK)
    {
      PrintError("Can not get class object");
      return 1;
    }

  //...
}

1 Ответ

0 голосов
/ 30 мая 2019

разберитесь. Lzma sdk не содержит код распаковки rar, исходный код 7z1900 в порядке.

целевая dll собрана из 7z1900 \ CPP \ 7zip \ Bundles \ Format7zF

...