Есть dll-ка написанная на C# и есть программа написанная на Borland С++ которая жаждет использовать методы реализованные в dll-ке.
Вопрос: Как это взаимодействие лучше организовать если:
dll-ка при необходимости (если такое изменение понадобится для организации взаимодействия с С++) может превратиться в exe или даже службу
некоторые методы реализованные в dll в силу особенностей .Net ощутимо долго отрабатывают при первом вызове. Да и dll-ке желательно проводить
некоторую подготовительную работу (обновлять используемые файлы и
тп.) и лучше если она будет делать это один раз за весь цикл работы
вызывающей программы.
dllка полностью в моей власти могу изменять её код как мне угодно. программа на C++ вне моей власти. Максимум что мне доступно-объяснить разработчикам как использовать мою dllку.
Желательна схема не требующая дополнительных действий (перерегистрация/перезапись реестра/переустановка компонентов и т.п.) при обновлении dllки.
производительность критична.
PS: Отдельное спасибо за пример реализации такого взаимодействия на Builder C++
Ответ
На мой взгляд самый простой способ - это написание промежуточной dll на C++\CLI, который позволяет с одной стороны нормально экспортировать методы через __declspec(dllexport), а с другой нормально вызывать методы из библиотек, которые написаны на C#.
Когда сам интересовался этим вопросом, то плагины для VS не работали корректно, по-моему, из-за кирилицы (может за пару лет стало лучше), а вручную декомпилировать библиотеку и вносить изменения в MSIL быстро надоело.
Комментариев нет:
Отправить комментарий