Там, где я работаю, мы обнаружили, что лучший способ сделать это - написать код переноса на C ++ / CLI. Я думал, что у меня есть хорошая статья в блоге об этом процессе, но, видимо, нет. У меня есть две короткие статьи, одна о том, как работать с неуправляемыми статическими библиотеками , и одна о , как обернуть библиотеки (в управляемом C ++ в отличие от C ++ / CLI). Решение аналогичное - просто вам нужно связать библиотеку-заглушку, которая загружает dll, или загрузить dll самостоятельно и вызвать GetProcAddress, чтобы получить процедуру, которую вы упаковываете.
Преимущество заключается в том, что вы можете вызывать неуправляемый код напрямую из C ++ / CLI и контролировать, когда и как происходит сортировка. Недостатком является то, что вы пишете на C ++, и вы должны контролировать, как происходит маршаллинг.