Я создаю плагин для MS Visual C ++ 2010 Express и хотел бы включить возможности из библиотеки HDF5 .Я пробовал как собрать HDF5 из исходного кода с помощью CMake, так и установить предварительно скомпилированную библиотеку (HDF5-1.8.7_CMake_x86_shared.zip
для VC 2008).Для любого каталога / метода сборки я изменил свойство своего проекта:
- C / C ++> General> Дополнительные каталоги включения: добавьте
include
для HDF5 - Linker> General> Дополнительные каталоги библиотек: добавьте
lib
для HDF5
Вот фрагмент моего модуля DLL:
#include "cpp/H5Cpp.h"
static IResult OnBeginDocument (IDocument pDoc)
{
H5Fcreate("C:\\out.h5", H5F_ACC_EXCL, H5P_DEFAULT, H5P_DEFAULT);
return True;
}
Обратите внимание, что VC ++ правильно анализирует файлы .h
вНапример, визуально отображать всплывающую документацию для H5Fcreate
, когда я наводю указатель мыши на этот фрагмент.Моя проблема в том, что я не могу собрать модуль, который пытается использовать H5Fcreate
.Вот вывод консоли из моих попыток сборки:
1>MyProject.obj : error LNK2019: unresolved external symbol __imp__H5Fcreate referenced in function "int __cdecl OnBeginDocument(struct IModuleStruct *)" (?OnBeginDocument@@YAHPAUIModuleStruct@@@Z)
1>MyProject.obj : error LNK2019: unresolved external symbol __imp__H5check_version referenced in function "int __cdecl OnBeginDocument(struct IModuleStruct *)" (?OnBeginDocument@@YAHPAUIModuleStruct@@@Z)
1>C:\MyProject\Release\MyProject.dll : fatal error LNK1120: 2 unresolved externals
Оба метода попытки связать в HDF5 (предварительно скомпилированные против самокомпилированных, как описано выше) приводят к точно таким же ошибкам, поэтому я не уверенгде я ошибаюсь.
Большое спасибо @HasanKhan и @StevieG, это были полезные советы для n00bs, как я.Просто для ясности, мне действительно нужно было добавить пути к файлам lib в Linker> Input> Additional Dependencies:
hdf5dll.lib
hdf5_cppdll.lib
Мне может понадобиться добавить другие файлы lib, если мне требуются другие функции HDF5.Кроме того, оказалось, что мне нужно было скопировать библиотеки HDF5 (из bin
) в мою системную директорию (например, C:\WINDOWS\System32\
), чтобы плагин работал правильно во время выполнения.Все хорошо, спасибо!