Почему fopen не может открыть существующий файл?

Я использую 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
}
6
задан tshepang 24 April 2014 в 21:32
поделиться