Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

С# + С++

5.1K
19 июля 2007 года
Fess exe
19 / / 21.05.2004
В описании C# повсюду написано, что оно совместимо со всеми другими языками через CLR. Но что это практически значит, я так и не понял. Конкретно вопрос: как (и можно ли) использовать имеющийся в наличии C++ код в приложении на C#? Например, как создать приложение Windows Forms с использованием класса на C++?
240
19 июля 2007 года
aks
2.5K / / 14.07.2006
Только на Managed С++.
на обычном С++ нелзя.
А значит это по сути то, что любой язык для .Net компиляруется в промежуточный объектный байт-код, который собственно и выполняется на виртуальной машине фреймоворка.
63
19 июля 2007 года
Zorkus
2.6K / / 04.11.2006
А так же, на мой взгляд, это значит то, что по сути --- под .NET существует один язык, на котором стоит писать -- шарп. Родной язык платформы, сразу разработанный специально для нее. Зачем писать на managed C++, когда можно на шарпе, раз все равно приложения будут использовать одну и ту же библиотеку базовых классов .NET?;)
240
19 июля 2007 года
aks
2.5K / / 14.07.2006
Ну это само собой. Видимо автор хотел заюзать уже написанный код на плюсах. Вот - не получится. Только на managed.
3
19 июля 2007 года
Green
4.8K / / 20.01.2000
Да почему же не получится? Через маршалинг и вперед.
63
19 июля 2007 года
Zorkus
2.6K / / 04.11.2006
Цитата: Green
Да почему же не получится? Через маршалинг и вперед.


Или, для более старой версии платформы, PInvoke.
(Оффтоп)
Хотя, один мой друг, работающий сейчас с .NET 3.0, говорил, что маршаллинг -- это 9 круг для тестера:)
Уж не знаю, насколько он прав, не работал.
(/Оффтоп)
Только вот вызывать нативный код из управляемых платформ - это очччень радикальное решение, автор. Для прикладных задач использовать это точно не надо. В принципе, ты можешь написать реализацию почти всех нужных функций на С++, и только вызывать их из кода на шарпе. Но это жуть.

240
20 июля 2007 года
aks
2.5K / / 14.07.2006
Цитата: Green
Да почему же не получится? Через маршалинг и вперед.



Это не то )
Автор же как мне видится хочет просто компиялть плюсовый код и тут же юзать оттуда классы. )

63
20 июля 2007 года
Zorkus
2.6K / / 04.11.2006
Цитата: aks
Это не то )
Автор же как мне видится хочет просто компиялть плюсовый код и тут же юзать оттуда классы. )


В маршаллинге можно и так.
Только вот для множественного наследования вроде, сбоит.

5.1K
20 июля 2007 года
Fess exe
19 / / 21.05.2004
Спасибо за ответы.

aks прав - у меня есть библиотека функйий, использующая только STL и я хочу сделать для неё интерфейс на C#. Насчёт я не совсем понял - чем он всё таки отличается от C++ и С#?
B что будет, если я возьму существущий проект на C++ и скомпилирую его как managed?

В маршалинге я не силён, кроме того это не очень удобно тк мне придётся по ходу дела вносить изменеия в код на C++. Может быть есть какая-нибудь переводилка с одного языка на другой, как с Java на с++?
240
20 июля 2007 года
aks
2.5K / / 14.07.2006
Цитата: Fess exe

Насчёт я не совсем понял - чем он всё таки отличается от C++ и С#?


Чем отличается С++ от C# что ли? Не понял вопроса.

Цитата: Fess exe
B что будет, если я возьму существущий проект на C++ и скомпилирую его как managed?


Так не получится. По сути C++ и managed С++ тоже разные языки. И много, что можно в C++ нельзя в managed.

350
20 июля 2007 года
cheburator
589 / / 01.06.2006
Насчет STL - в .NET есть соответствующая замена, то бишь набор классов (в том числе шаблонных) для работы с "коллекциями" и массивами. Естессно, "обычный" С++-код придется переделать. После этого он будет интегрироваться с другими дотнет-языками.
5.1K
20 июля 2007 года
Fess exe
19 / / 21.05.2004
2 aks: Я как раз и хотел спросить, чем отличатся просто C++ от managed, но криво написалось.

2 cheburator: то что можно переделать - понятно, но хочется свести количество работы руками к минимуму.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог