C ++ CLR win32 или другие? - PullRequest
       17

C ++ CLR win32 или другие?

0 голосов
/ 15 августа 2011

Я работаю с C ++ и обнаружил, что существуют различные виды C ++, такие как CLR, Win32, MFC ....

Кроме того, я обнаружил, что некоторые библиотеки C ++ можно вызывать внутри другой программы на C #. Как это может быть?

Поскольку считается, что C ++ быстрее C #, поскольку для его запуска не требуется платформа, однако, если использовать C ++ в CLR, он станет медленнее, если требуется .Net framework?

Вопрос в следующем: Я хочу создать библиотеку C ++, которая вызывает команду windows и возвращает результат, и эту библиотеку можно вызывать в другой программе на C #. Возможно ли это сделать? и если да, будет ли библиотека C ++ требовать .Net Framework и работать медленнее?

Ответы [ 2 ]

5 голосов
/ 15 августа 2011

Ваша путаница понятна, но ваше понимание ошибочно.

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

C ++ / CLI (не CLR) на самом деле не C ++.Это язык C ++, который компилируется в байт-код .net IL.Он имеет много ограничений и имеет те же ограничения, что и C #, VB.NET и другие языки .NET.Это очень похоже на C ++, но не совсем то же самое.

Приложения C ++ / CLI компилируются в байт-код .net IL, поэтому они ничем не отличаются от приложений C #.Фактически, практически любой язык, основанный на .net, будет компилироваться в один и тот же байт-код и использовать те же фреймворки.

Являются ли программы на C # или C ++ / CLI «более медленными», не так ясно.Слишком много энтузиастов C ++ увековечивают миф о том, что управляемый код работает медленно.Это не.Некоторые вещи работают медленно, например, запускать его в первый раз (он должен компилировать код по требованию), но, поскольку .NET Jitter (только компилятор времени) может оптимизировать код для платформы, на которой он работает, он пришел, чтобы сделать кодработать лучше.

Конечно, управляемый код также имеет сборку мусора, что очень удобно, но может вызвать проблемы с производительностью в некоторых ситуациях.Но это не каждая ситуация и даже не большинство ситуаций.

2 голосов
/ 15 августа 2011

Да, это возможно.

Если вы используете C ++ / CLI, вы можете просто включить сборку в ваш проект C # и вызвать функции, как обычный код C #. Если вы пишете это с использованием не-CLI C ++ (Win32 и MFC не являются разновидностями C ++, они просто библиотеки ...), тогда вам придется использовать P / Invoke из C # для вызова написанных функций в C ++.

Да, C ++ / CLI, возможно, немного медленнее, чем ванильный C ++ для некоторых вещей. Но не очень. CLR довольно быстрый.

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