FCIFlushCabinet выдает ошибку нарушения доступа с Cabinet.lib, но работает с FCI.Lib и Fdi.Lib - PullRequest
0 голосов
/ 01 марта 2019

У нас был проект visual studio 6.0, в котором мы использовали ... FCI.LIB FDI.LIB и API-интерфейсы FCICreate, FCIAddFile и FCIFlushCabinet.

он работал хорошо.Но, поскольку мы перешли на VS2015, нам пришлось заменить FCI.LIB и FDI.LIB на Cabinet.Lib.

Он прекрасно работает и работает до FCICreate и FCIAddFile.Но FCIFlushCabinet () выдает приведенную ниже ошибку времени выполнения.Исключение выдается в 0x5DCADE7E (vcruntime140.dll) в CabProject.exe: 0xC0000005: Место чтения нарушения прав доступа 0x57EC8B55.

Пожалуйста, подскажите, что здесь не так.

1 Ответ

0 голосов
/ 18 июля 2019

Пожалуйста, следуйте полезным комментариям Риты Хан.Даже после установки 312617 в качестве значения m_cabParams.cbFolderThresh было переполнено каким-то другим файлом.

Позже оно изменилось 1024 * 128 = 131072. Кроме того, оно не удалось с определенным сжатием файла XML.

ТогдаОбнаружил, что у нас есть функция обратного вызова "FNFCISTATUS" и там сделаны некоторые ненужные манипуляции.Закомментирование этого кода помогло решить проблему.

FNFCISTATUS(progress)
{

client_state    *cs;

cs = (client_state *) pv;

if (typeStatus == statusFile)
{
    /*
    cs->total_compressed_size += cb1;
    cs->total_uncompressed_size += cb2;
    */
...