Я пытался обновиться до последних оболочек HDF5DotNet (1.8.7) и получаю следующие предупреждения (при работе в режиме отладки от VS2010):
PInvokeStackImbalance был обнаружен
Сообщение: вызов функции PInvoke 'HDF5DotNet! :: H5Fopen' разбалансировал стек.
Это вероятно потому, что управляемая подпись PInvoke не совпадает с неуправляемой целевой подписью.
Убедитесь, что соглашение о вызовах и параметры подписи PInvoke соответствуют целевой неуправляемой подписи.
Я использую предварительно скомпилированные двоичные файлы (сборка HDF5DotNet для 32-разрядной версии .NET Framework 4.0), но получил тот же результат при компиляции из исходного кода.
Странно, но при запуске моего приложения, которое вызывает обертки HDF5DotNet в режиме, отличном от DEBUG, я не вижу проблем. Я заметил, что между 1.8.6 и 1.8.7 все соглашения о вызовах были переключены с Cdecl на StdCall. Может ли это быть причиной этого? Я видел другие форумы, на которых говорилось, что CallingConvention должна быть Cdecl ...
Спасибо!