我正在使用这种简单的方法
bool bk = cabber.OpenExtractCAB( "C:\\xx\\xx\\INSTALL.CAB", "C:\\xx\xx\\");
以这种方式实现
BOOL OpenExtractCAB( char * cCABFullPath, char * cDestinationFolder )
{
FDICABINETINFO fdici;
int hf;
char *p;
// Set up some important globals
g_hfdi = NULL;
g_pFDIProgress = NULL;
g_hfdi = FDICreate(
fdi_mem_alloc,
fdi_mem_free,
fdi_file_open,
fdi_file_read,
fdi_file_write,
fdi_file_close,
fdi_file_seek,
cpu80386,
&g_fdi_erf
);
if (g_hfdi == NULL)
{
return FALSE;
}
/*
* Is this file really a cabinet?
*/
hf = fdi_file_open(
cCABFullPath,
_O_BINARY | _O_RDONLY | _O_SEQUENTIAL,
0
);
if (hf == -1)
{
return FALSE;
}
if (FALSE == FDIIsCabinet(
g_hfdi,
hf,
&fdici))
{
/*
* No, it's not a cabinet!
*/
_close(hf);
return FALSE;
}
我没有发布该函数的其余部分,但这就是它停止的地方,而且我不明白为什么检查我的文件是否为CAB的FDI函数为什么总是返回false。一个CAB文件。 通过调试它hf = 0,但我不知道如何调试其余部分,看看实际上出了什么问题