Замена c api dll на C # dll без ущерба для клиентов - PullRequest
0 голосов
/ 05 апреля 2019

У меня есть DLL, API, который предоставляет много методов. Я хочу заменить эту DLL на одну, написанную на более современном языке. Тем не менее, у меня есть клиенты, которые уже интегрированы в cll, и я хочу просто дать им новый c # dll, который реплицирует c dll. Мне нужно сделать это таким образом, чтобы клиенты, которые интегрировались в cll, не пострадали вообще. я просто хочу заменить c dll на c #, и это должно показаться им незаметным.

Это технически возможно? И если да, то как я должен идти о репликации интерфейса c в c #.

У меня есть ряд методов, в c dll определяется с помощью dllexport

__declspec (dllexport) void __stdcall

1 Ответ

1 голос
/ 05 апреля 2019

Вы не можете сделать это с помощью C # dll.Вам нужно написать оболочку COM для управляемой библиотеки DLL, а затем клиентский код должен будет ссылаться на библиотеку типов оболочки COM (* .tlb).

Это можно сделать с помощью C ++ / CLI, построивdll в смешанном режиме, который предоставляет собственный интерфейс для неуправляемого кода.Тогда вы просто распространили бы dll и файл .lib как обычно, и клиентский код просто связался бы с файлом .lib (как это, вероятно, и делается сейчас).

Хотя это довольно трудоемкий труд.Если не будет проблем с оригинальным Cll, я не думаю, что я пойду на неприятности.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...