#c# #c #api #interface
#c# #c #API #интерфейс
Вопрос:
У меня есть c dll, которая является API, который предоставляет множество методов. Я хочу заменить эту библиотеку DLL на другую, написанную на более современном языке. Однако у меня есть клиенты, которые уже интегрировались в c dll, и я хочу просто предоставить им новую c # dll, которая копирует c dll. Мне нужно сделать это таким образом, чтобы клиенты, которые интегрировались в c dll, вообще не пострадали. т. Е. Я просто хочу заменить c dll на c #, и это должно казаться им бесшовным.
Возможно ли это технически? И если да, то как мне следует копировать интерфейс c в c #.
У меня есть несколько методов в c dll, определенных с помощью dllexport
__declspec(dllexport ) аннулирует __stdcall
Ответ №1:
Вы не можете сделать это с C # dll. Вам пришлось бы написать COM-оболочку для управляемой библиотеки DLL, а затем клиентский код должен был бы связать с библиотекой типов COM-оболочки (*.tlb).
Вы могли бы сделать это с помощью C / CLI, создав библиотеку DLL смешанного режима, которая предоставляет собственный интерфейс для неуправляемого кода. Затем вы просто распространяете DLL и .файл библиотеки, как обычно, и клиентский код будет просто ссылаться на .файл библиотеки (как это предположительно происходит сейчас).
Тем не менее, это изрядная часть работы. Если нет какой-либо проблемы с оригинальной C DLL, я не думаю, что я бы стал беспокоиться.