Основная задача Microsoft - использовать COM-взаимодействие. Есть, однако, еще один вариант, иногда называемый «Reverse P / Invoke», есть интересное сообщение в блоге здесь и еще немного здесь
Кроме того, если у вас есть Delphi.NET (теперь уже не функционирующий), этот язык позволяет вам экспортировать статические методы, как если бы вы использовали любую функцию dll, тогда вы можете вызывать сборку Delphi.NET точно так же, как обычную нативную Dll.