Ошибка открытия файла HDF5 - PullRequest
4 голосов
/ 04 августа 2011

Я создал функцию открытия файла HDF5, как показано ниже:

int OpenHDF5(string sFileName)
{   
    // Check for valid HDF5 file 
    if (!H5File::isHdf5(sFileName.c_str())) 
    {   
       // Invalid HDF5 file
       return -1
    }

    // Try block to detect exceptions raised by any of the calls inside it
    try
    {  
       // Turn off the auto-printing when failure occurs so that we can handle the errors appropriately
       Exception::dontPrint();

       // Now Open the file
       H5File file( sFileName.c_str(), H5F_ACC_RDONLY ); 
    }  

    // Catch failure caused by the H5File operations
    catch( FileIException error )
    {   
        error.printError();
        return -1
    }

    return 0
}           

Ошибка компиляции не возникла, но не удалось связать со следующими исключениями: Связывание ...
Создание библиотеки F: \ Tips \ Debug \ Tips.lib и объекта F: \ Tips \ Debug \ Tips.exp
TwinSatObservation.obj: ошибка LNK2001: неразрешенный внешний символ "public: статический класс H5 :: FileCreatPropList const H5 :: FileCreatPropList :: DEFAULT" (? DEFAULT @ FileCreatPropList @ H5 @@ 2V12 @ B)
TwinSatObservation.obj: ошибка LNK2001: неразрешенный внешний символ "public: статический класс H5 :: FileAccPropList const H5 :: FileAccPropList :: DEFAULT" (? DEFAULT @ FileAccPropList @ H5 @@ 2V12 @ B)
F: \ Tips \ Debug \ Tips.exe: фатальная ошибка LNK1120: 2 неразрешенных внешних кода

Я добавил следующие библиотеки в поле ввода «Дополнительные зависимости» компоновщика VS 2008
hdf5dll.lib
hdf5_hldll.lib
hdf5_cppdll.lib
hdf5_hl_cppdll.lib

Скажите, пожалуйста, какую библиотеку я забыл добавить? Большое спасибо!

Ответы [ 2 ]

4 голосов
/ 14 ноября 2016

Что касается hdf5-1.8.17 с VS2010 или VS2015, определение H5_BUILT_AS_DYNAMIC_LIB в качестве настройки препроцессора ( Project> Свойства> C / C ++> Препроцессор> Определения препроцессора ) вылечивает точно такой же симптом длямне.Благодаря оригинальному сообщению .

2 голосов
/ 04 августа 2011

Добавить HDF5CPP_USEDLL;_HDF5USEDLL_; в Определения препроцессора Поле ввода.

...