Хорошо, у меня есть библиотека HDF5, загруженная с официального сайта, и у меня есть несколько DLL, включая hdf5dll.dll и hdf5_hldll.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.
ОС: Windows 7 64 бит
Среда: Visual Studio 2008 Professional
Обновление: Я не знаю, будет ли это связано, и я не помню, если моя среда VS2008 SP1 , но этот вопрос может держать ключ к разгадке тайны. Я сейчас пытаюсь повторить сценарий на 32-битной VS 2010 дома.