Можете ли вы запустить C # Code из C ++? - PullRequest
2 голосов
/ 09 октября 2009

Можете ли вы запустить код C # из c ++? и как?

Ответы [ 7 ]

18 голосов
/ 09 октября 2009

Если ваш код C ++ является «управляемым» C ++, который построен на общеязыковой среде выполнения (CLR) .NET, тогда легко ссылаться на сборку C # и вызывать открытые классы и методы. Если, однако, ваш код C ++ является «нативным» (не построен на CLR), то вы захотите зарегистрировать свою сборку C # для взаимодействия COM и вызвать объект COM из своего кода C ++. Есть статья MSDN, которая охватывает все кровавые подробности:

http://msdn.microsoft.com/en-us/library/w29wacsy(VS.80).aspx

Существует также хорошая статья о CodeProject Ника Паркера под названием " Предоставление компонентов .NET для COM ", которая может оказаться полезной.

1 голос
/ 09 октября 2009

Другой вариант, который у вас есть, в зависимости от того, что вы пытаетесь сделать, - это разместить CLR в вашем приложении, что позволяет вам более тесно интегрировать код C #, чем это возможно, проходя через COM. Вы можете прочитать обзор этого в статье MSDN Magazine .

1 голос
/ 09 октября 2009

Вы можете использовать неуправляемый C ++ для запуска приложения .NET, но насколько это будет сложно, будет зависеть от того, какую версию .NET вы используете.

Когда я сделал это с .NET 2.0, мне потребовалось две недели, чтобы заставить его работать.

Ответ на этой странице дает руководство относительно того, какие программы необходимы для этого.

http://www.pcreview.co.uk/forums/thread-1225474.php

0 голосов
/ 09 октября 2009

Я предполагаю, что ответ, который был бы действительно полезен для Чада:

Да, технически возможно запустить код C # из C ++. Тем не менее, если другие ответы на этой странице звучат так, словно они у вас над головой, значит, вы недостаточно опытны, чтобы на самом деле сделать это. Это довольно сложно осуществить, учитывая все обстоятельства, поэтому, если вам действительно не нужно запускать код C # из C ++, лучше всего переписать код C # как C ++.

0 голосов
/ 09 октября 2009

Вы можете вызвать .NET-код без COM, используя mscoree.dll ClrCreateManagedInstance Function . Необходимо указать полное имя сборки имени типа, которое вы хотите создать, в параметре pTypeName.

Из памяти, в некоторых случаях вам может понадобиться добавить атрибут ComVisible к интерфейсам или классам, к которым вы хотите получить доступ, используя ClrCreateManagedInstance (). Однако это не требует, чтобы вы также регистрировали свой класс или любые другие проблемы с развертыванием, которые идут с COM.

0 голосов
/ 09 октября 2009

да, вы можете использовать COM для вызова .NET

0 голосов
/ 09 октября 2009

С C ++ / CLI, да (ранее Managed C ++ - с различными расширениями языка).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...