4

MS Visual C++ 2010 Express でプラグインを作成しています。HDF5 ライブラリの機能を組み込みたいと考えています。HDF5-1.8.7_CMake_x86_shared.zip私は、CMake を使用してソースから HDF5 をビルドすることと、プリコンパイル済みライブラリ ( VC 2008 用)をインストールすることの両方を試みました。どちらのビルド ディレクトリ/メソッドについても、プロジェクト プロパティを変更しました。

  • C/C++ > 一般 > 追加のインクルード ディレクトリ: includeHDF5 用の を追加します。
  • [リンカー] > [一般] > [追加のライブラリ ディレクトリ]: libHDF5 用の を追加します。

これが私の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\これで大丈夫です、ありがとう!

4

2 に答える 2

3
  • [リンカー] > [全般] > [追加のライブラリ ディレクトリ]: .lib ファイルを含むディレクトリへのパスをここに追加する必要があります。

  • Linker > General > Input: ここに .lib ファイルの名前を追加する必要があります

于 2011-09-13T08:45:00.580 に答える