Мы можем хранить не более 512 открытых файлов в приложении VC. Я предлагаю закрыть ненужные файлы, используя

Windows XP использую Visual Studio 6 (да, я знаю, что он старый) сборка / поддержка C ++ DLL. Я столкнулся с проблемой, что fopen не удалось открыть существующий файл, он всегда возвращает NULL.

Я пробовал:

Проверка errno и _doserrno путем установки обоих на ноль и последующей проверки их снова, оба остаются нулевыми, и, таким образом, GetLastError () не сообщает об ошибках. Я знаю, что fopen не требуется устанавливать errno, когда он сталкивается с ошибкой в ​​соответствии со стандартом C.Жесткое кодирование пути к файлу, которые не являются относительными.Пробовал на другой машине разработчиков, результат тот же.

Действительно странная вещь - CreateFile работает, и файл может быть прочитан с помощью ReadFile. Мы считаем, что это работает в сборке релиза, однако мы также наблюдаем очень странное поведение в других областях приложения, и мы не уверены, связано ли это.

Код ниже, я не вижу ничего странного, для меня это выглядит вполне стандартно. Исходный файл не изменился чуть менее полугода.

HRESULT CDataHandler::LoadFile( CStdString szFilePath )
{
    //Code
    FILE* pFile;
    if ( NULL == ( pFile = fopen( szFilePath.c_str(), "rb") ) )
    {
        return S_FALSE;
    }
    //More code
}

Ответы на вопрос(5)

Ваш ответ на вопрос