Экспорт функций из библиотеки классов C # - PullRequest
4 голосов
/ 11 марта 2010

Как мне экспортировать функции, определенные в библиотеке классов C #, при этом позволяя импортировать и вызывать их из неуправляемого приложения C ++ / DLL?

Ответы [ 4 ]

8 голосов
/ 11 марта 2010

Строго говоря, вы не можете просто экспортировать функции, как в классическом .dll, поскольку .NET .dll на самом деле совсем не .dll. Вы можете выбрать только три варианта:

  1. Использовать управляемый C ++
  2. Представьте ваши классы C # как объекты COM и используйте их из вашего кода C ++
  3. Разместите среду выполнения .NET в вашем проекте C ++ и через нее взаимодействуйте с вашими классами C #.
2 голосов
/ 11 марта 2010

Ваша заявка на C ++ должна начинаться с размещения CLR. От .NET DLL ничего особенного не требуется.

1 голос
/ 11 марта 2010

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

Другой вариант - настроить скомпилированную сборку для экспорта функций. Компилятор C # не может этого сделать, но для его выполнения требуется небольшое изменение кода MSIL. Взгляните на эту статью - там есть несколько ссылок о том, как все это работает, и инструмент для его автоматизации (хотя я сам не пробовал).

1 голос
/ 11 марта 2010

Вы бы не стали. Не поддерживается. Вы можете в значительной степени экспортировать только COM-объекты из класса C # библиотечно.

...