lPestl
@lPestl

Как использовать namespace/классы/методы классов из сторонней dll собранной на C# в проекте на C++?

Если описать в более общем случае, то суть проблемы в следующем:
Есть проект на C#, который содержит namespace с классами. Собирает проект dll. А так же есть другой, сторонний проект на C++, в котором необходимо использовать эти namespace и классы и юзать методы классов. Каким образом это сделать? Как подключить dll, чтобы проект видел классы?

А если нужен более конкретный пример, то уточняю:
Необходимо к приложению на unreal engine прикрутить facebook api, чтобы работало на PC. Нашел где-то на форумах подсказку. Нашел и собрал Facebook C# SDK: https://github.com/facebook-csharp-sdk/facebook-cs...
На выходе получил dll. Dll`ку закинул в папку plagins проекта на Unreal engine. По аналогии с эти методом получаю DLLHandle , но как выудить оттуда нужные классы - не знаю. В примере описан только вариант с функциями. Подскажите как имея handle dll использовать классы и методы в C++/C++ unreal.
  • Вопрос задан
  • 1106 просмотров
Пригласить эксперта
Ответы на вопрос 1
Nipheris
@Nipheris Куратор тега C++
Методы и классы в дотнет сборках имеют столько же общего с классами в C++, сколько и классы джавы. Т.е. в общем-то ничего. Чтобы обращаться к ним из того же процесса, вам необходимо брать CLR, запускать её и загружать туда интересующую вас сборку. То, что у дотнетовских сборок расширение DLL не должно сбивать вас с толку - это сделано для совместимости в некоторых сценариях, сами сборки мало похожи на DLL.

Итого у вас 3 варианта:
1) написать небольшое приложение на Шарпе, из него осуществлять необходимые действия с помощью Facebook C# SDK, и взаимодействовать с ним из основного проекта через IPC. Тогда не придётся самому запускать CLR, достаточно будет запустить этот дотнетовский EXE-шник;
2) изучить API одной из реализаций .net рантайма (.net framework, .net core, mono), под которой способна работать Facebook SDK, и пользоваться этим API чтобы запускать рантайм в рамках вашего C++ приложения;
3) воспользоваться документацией к Фейсбуковскому REST API и написать клиента самому на C++ и забыть про указанную вами библиотеку.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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