わかりました。公式サイトから HDF5 ライブラリをダウンロードしました。hdf5dll.dll や hdf5_hldll.dll などの DLL もいくつかあります。
H5
クラス、H5LT
、H5F
、およびで、ネイティブ呼び出しのラッパーと思われるものを持っていますH5T
。H5.cs の例:
namespace HDF5
{
using hid_t = System.Int32;
using herr_t = System.Int32;
using hsize_t = System.UInt64;
using size_t = System.UInt32;
// hbool_t is 0:false, +:true
using hbool_t = System.UInt32;
// htri_t is 0:false, +:true, -:failure
using htri_t = System.Int32;
public class H5
{
const CharSet StringMarshallingType = CharSet.Ansi;
const string DLLNAME = "hdf5dll.dll";
///* Functions in H5.c */
//H5_DLL herr_t H5open(void);
[DllImport(DLLNAME,
CharSet = StringMarshallingType)]
public static extern herr_t H5open();
Program.cs では、 を使用H5.H5open();
していますが、BadImageFormatException
. 別の DLL が必要ですか? メソッドのシグネチャが間違っているように見えますか?
次のステップとして、これを C# で取得したいと思います: http://www.hdfgroup.org/HDF5/Tutor/h5lite.html。
OS: Windows 7 64bit
環境: Visual Studio 2008 Professional
更新:これが関連するかどうかはわかりません。また、私の環境が VS2008 SP1であるかどうかも覚えていませんが、この質問が謎を解く鍵を握っている可能性があります。私は現在、自宅で32ビットVS 2010でシナリオを繰り返そうとしています。