Вопрос по c++, c#, virtual-functions, dynamic-loading, interop – По сути, я создал шаблон, который обеспечивает «псевдо-наследование смешанного режима». Теперь мои объекты c # происходят от базового класса в c ++.

7

я есть приложение на C ++. Это поддерживает пользовательские DLL-библиотеки плагинов C ++, они будут динамически загружать эти DLL, а затем смогут динамически создавать и использовать типы пользователей. Эти типы пользователей являются производными от базовых типов и интерфейсов, определенных в основной библиотеке основного приложения, поэтому я держу объекты пользователя в качестве указателей на базовый класс и вызываю виртуальные функции пользователя, чтобы их волшебство происходило.

Теперь я хочу расширить библиотеки плагинов, чтобы разрешить управляемые библиотеки DLL (я забочусь о C # в основном). Я хочу, чтобы все то же волшебство происходило в библиотеках плагинов C #.

Как я могу динамически загрузить эти библиотеки DLL, как я думаю, что LoadLibrary win32, который я сейчас использую, будет доволен управляемой DLL. У меня не будет доступа к этим библиотекам во время компиляции / компоновки, они приходят от пользователя.

После загрузки библиотеки, к сожалению, я подозреваю, что COM в будущем станет способом вызова производных функций. Возможно, я мог бы использовать оболочку CLI / C ++, о которой я читал, но я здесь очень неопытен и буду признателен за любые советы или ссылки на соответствующие статьи.

Ваш Ответ

1   ответ
2

в котором будут размещены ваши классы C #, и использовать его как мост в вашем проекте C ++.

Еще несколько ссылок на этот подход:

Соединение кода на c ++ и c # с помощью моста c ++ / cliМост .NET в C ++

Последняя ссылка имеет простой исходный код для моста

Нужно ли мне запускать CLR в неуправляемом процессе (по ссылке в ответе Al3891 выше) для загрузки этой библиотеки DLL моста? AlwaysTraining
На самом деле, нет. Смотрите вторую ссылку в моем посте Padu Merloti

Похожие вопросы