У меня была эта проблема с С#, когда я использовал DotNet1.1.
Проблема вот в чем. У меня есть неуправляемая dll, в которой есть функция, которая принимает указатель на функцию (среди других аргументов). Когда я объявляю DLLImport в коде C#, я передаю делегат. Но делегаты в C# имеют соглашение о вызовах stdcall
, тогда как неуправляемая функция ожидает указатель на функцию cdecl
. Таким образом, мой наивный подход привел к сбоям. Затем я нашел следующее: http://www.codeproject.com/KB/cs/cdeclcallback.aspx Какой-то парень написал отличную библиотеку, позволяющую изменить соглашение о вызове делегата путем, как я понял, взлома MSIL. Дела шли хорошо, пока...
Я перешел на VS2008 и новую версию .NET. В этой версии указанная выше библиотека не работает. Я не специалист по C# или .NET и, честно говоря, плохо понимаю, что делает его библиотека (хотя она и с открытым исходным кодом), поэтому даже не хочу пытаться адаптировать ее под новый .NET. Однако я надеюсь, что в более новой версии С# есть лучшее решение для моей проблемы.
Итак, ТАК знатоки, помогите пожалуйста с моей болью в ягодицах :)