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