MS Visual C++ 2010 Express でプラグインを作成しています。HDF5 ライブラリの機能を組み込みたいと考えています。HDF5-1.8.7_CMake_x86_shared.zip
私は、CMake を使用してソースから HDF5 をビルドすることと、プリコンパイル済みライブラリ ( VC 2008 用)をインストールすることの両方を試みました。どちらのビルド ディレクトリ/メソッドについても、プロジェクト プロパティを変更しました。
- C/C++ > 一般 > 追加のインクルード ディレクトリ:
include
HDF5 用の を追加します。 - [リンカー] > [一般] > [追加のライブラリ ディレクトリ]:
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 に感謝します。これらは私のような初心者にとって役立つヒントでした。明確にフォローアップするために、リンカー>入力>追加の依存関係にlibファイルパスを追加する必要がありました。
hdf5dll.lib
hdf5_cppdll.lib
他の HDF5 機能が必要な場合は、他の lib ファイルを追加する必要があるかもしれません。また、実行時にプラグインが正しく動作するには、HDF5 DLLbin
を (から) システム ディレクトリ (たとえば、 )にコピーする必要があることがわかりました。C:\WINDOWS\System32\
これで大丈夫です、ありがとう!