Я пишу оболочку .NET для неуправляемой DLL. Исходная DLL — это C++ с оболочкой C, которая в основном просто копирует API в форме C, так что привязка к языку не такая уж проблема. Я уже написал для него привязку к Python, поэтому знаю, что то, что я пытаюсь сделать, должно работать.
DLL имеет ряд обратных вызовов, экспортируемых как глобальные элементы, а именно:
__declspec(dllexport) extern int (*some_callback)(int32_t*, uint32_t);
Мне нужно прикрепить управляемую функцию к этому указателю, но я не могу понять, как получить нефункциональные ресурсы в неуправляемой библиотеке. Если я не слепой, DllImport импортирует только функции.
Есть ли способ С# сделать это, или мне нужно написать небольшую прокладку DLL на C, которая обеспечивает функции регистрации? Я ненавижу такой подход, потому что он просто кажется неэлегантным, но если я должен, я должен.