我在CMAKE脚本中使用find_package(HDF5 COMPONENTS CXX REQUIRED)
来加载HDF5的包含目录和库。 Cmake告诉我
Found HDF5: C:/Program Files/HDF_Group/HDF5/1.10.0/bin/hdf5_cpp.dll (found version "1.10.0") found components: CXX
并生成我的visual studio
解决方案。
我还使用${HDF5_LIBRARIES} ${HDF5_CXX_LIBRARIES}
中存储的库作为我的目标,但是当我尝试构建它时,我收到链接错误LNK1107
,说明文件为hdf5_cpp.dll
:
invalid or corrupt file: cannot read at 0x380
我认为这是因为visual studio
试图直接链接到dll
文件而不是另一个文件夹中的lib
文件,即: / p>
C:\Program Files\HDF_Group\HDF5\1.10.0\lib
问题:这是FindHDF中的错误还是配置错误?
答案 0 :(得分:2)
我有一段时间没在Windows上使用过hdf5,但我确实记得有一个错误导致它链接到dll而不是lib。
你应该手动设置(通过命令行cmake -D方法,或通过cmake gui)
AppDomain.CreateDomain("sandbox");
等 - 或者只是
AppDomain.CreateDomain("sandbox",null, info);
取决于你是否有较旧或较新版本的FindHDF5(它们在较新版本中更改库var名称 - 检查用于确保正确使用它们的那些 - 我从内存中执行此操作因此可能会出错)
编辑: 如果manaully指定libs的选项是一个问题,那么如果您的hdf5库是使用cmake生成的makefilesetc编译的,则可以选择使用FindPackage(HDF5 NO_MODULE)。 使用NO_MODULE时,查找包脚本将绕过findhdf5.cmake脚本并查找放置在hdf5构建/安装文件的相关子目录中的HDF5Config.cmake或hdf5-config.cmake文件。
这是跨平台友好的,所有较新的hdf5版本都支持 - 只要它们是使用cmake而不是./configure构建的......