Добрый день
Скачал скомпилированную версию 0.13.6. Подключаю к Qt-based проекту в VS2008. lib подключил, хедеры и dllку переписал.
Простейший проверочный код:
#include "include/libraw.h"
...
LibRaw iProcessor;
char * path = "raw.NEF";
int code = iProcessor.open_file(path);
Компилируется нормально, запускается, выполняется, но в code возвращает LIBRAW_IO_ERROR.
Путь пробовал и абсолютный, и относительный, равку подсовывать другую пробовал - и не одну, и не от одной камеры. Результат прежний.
Есть какие-нибудь предположения о причинах? Или только брать сорсовую версию и отлаживать по шагам?
Заранее спасибо
Общее Начиная с 0.13.6
Общее
Начиная с 0.13.6 LibRaw собирается 2010-м Visual Studio. Т.е. скорее всего, имеет место быть несовместимость рантаймов: собранное хочет open/stat/итп от 2010-й, а вы линкуетесь с 2008-м.
Лучше - собирайте сорцовую версию прямо в рамках своего проекта, благо и .pro-файлы (для Qt/qmake) и vcproj/sln (для Visual Studio) в комплекте имеются.
Частности:
IO_ERROR, судя по коду, может вылезти в куче случаев:
_stati64() вернул ошибку
- файл не открылся
- действительно ошибка IO (например, битый файл и указатели в TIFF указывают в кукурузу)