Это должно сработать, я ожидаю, что у вас есть проблемы с вашей сортировкой. Вероятно, это материал, который был объявлен неправильно для PInvoking, который работал в .NET 1.1, но не в более поздних версиях.
Вы не говорите, какие у вас проблемы во время выполнения, и не говорите, как вы получаете доступ к своей библиотеке. Например, вы компилируете свою библиотеку вместе с вашим проектом? Если да, можете ли вы включить неуправляемую отладку в своем проекте на C # и войти в код, с которым у вас возникли проблемы? Как вы называете неуправляемый код? Это через PInvoke или вы управляли оболочками C ++?
По моему опыту, наилучшим решением для вызова устаревшей неуправляемой библиотеки является добавление управляемой библиотеки-оболочки для устаревшей библиотеки, написанной на управляемом C ++. Таким образом, вы предоставляете управляемый интерфейс для своей библиотеки для использования всеми языками .NET, и вам не нужно беспокоиться о том, чтобы ваши подписи PInvoke были правильными.
Ваш проект должен выглядеть примерно так.
Приложение C # -> Управление C ++ Wrapper DLL -> Старая DLL