Модераторы: Partizan, gambit

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> С++ и С# 
V
    Опции темы
Mormishka
Дата 11.3.2011, 18:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 236
Регистрация: 25.8.2010

Репутация: нет
Всего: нет



Как сделать программу которая совместно работают два языка? У меня программа на шарпе, хочу сделать вычислительную часть на C++. Как это можно сделать?
PM MAIL   Вверх
Gluttton
Дата 11.3.2011, 18:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Начинающий
***


Профиль
Группа: Завсегдатай
Сообщений: 1170
Регистрация: 28.8.2008
Где: Феодосия

Репутация: 2
Всего: 54



Mormishka, для этого необходимо создать Solution в который добавить два Project: один - C#, а второй - C++/CLI.
Затем в проекте на С++ необходимо создать класс реализующий методы реализующую вычислительную часть.
В проекте на C# при этом нужно добавить Reference на проект С++ и после этого, где это необходимо можно создавать классы написанные на С++ и вызывать их методы реализующие вычислительную часть.

P.S. На самом деле я не знаю ответа на вопрос, но философия .NET такова и это должно работать не только для связки C# + C++/CLI, но и для всех других возможных (например: VB + F#)...


--------------------
Слава Україні!
PM MAIL   Вверх
Mormishka
Дата 11.3.2011, 18:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 236
Регистрация: 25.8.2010

Репутация: нет
Всего: нет



Спасибо, попробую.
PM MAIL   Вверх
Gluttton
Дата 11.3.2011, 18:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Начинающий
***


Профиль
Группа: Завсегдатай
Сообщений: 1170
Регистрация: 28.8.2008
Где: Феодосия

Репутация: 2
Всего: 54



Цитата(Mormishka @  11.3.2011,  18:15 Найти цитируемый пост)
Спасибо

Рано - сначала попробуй, а то вдруг я чего не того насоветовал  smile ...


--------------------
Слава Україні!
PM MAIL   Вверх
Fortnox
Дата 11.3.2011, 20:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 373
Регистрация: 31.10.2008
Где: Ростов-на-Дону

Репутация: 2
Всего: 22



Никто также не мешает вам написать на c++ dll библиотеку. А потом при помощи P/Invoke использовать ее в .NET программах.
И маленький пример.

Это сообщение отредактировал(а) Fortnox - 11.3.2011, 20:54

Присоединённый файл ( Кол-во скачиваний: 6 )
Присоединённый файл  Solution1.7z 3,37 Kb
PM MAIL   Вверх
jonie
Дата 11.3.2011, 22:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

Репутация: 6
Всего: 118



или написать на C++ сделав COM класс, который и использовать через interop-ы


--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
kemiisto
Дата 11.3.2011, 23:04 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дикий Кот. =^.^=
****
Награды: 1



Профиль
Группа: Участник Клуба
Сообщений: 3292
Регистрация: 29.7.2007

Репутация: 3
Всего: 160



Gluttton, я чего то не очень уловил смысла твоего совета. Я так понимаю ТС хочет что-то побыстрее посчитать. И чем по-твоему будет отличаться производительность C# и С++/CLI? Всё в итоге будет переведено в IL и запущено поверх CLR. У языков однотипная модель исполнения, производительность будет почти равная. И не факт, кстати, что С++/CLI будет быстрее.

Тут нужны чистые нативные незагаженные smile плюсики. И IPC в каком-либо виде (вышеупомянутый COM, например). Но я бы пошёл другим путём.

Если есть нужда в суровом number crunching'е, надо делать unix-way:
  • Консольная прилада на плюсиках (альтернативно - Фортран), принимающая на вход data.inp и возвращающая на выходе data.out. 
  • GUI прилада. На C#*. Умеющая генерировать data.inp, парсить data.out и что-то там рисовать-отображать. Опционально умеющая запускать консольную приладу.
Получится максимально портабельно и расширяемо. На взрослое будующее. Мало ли захотим посчитать на каком-нить *nix-кластере.

А COM - жёсткая привязка к платформе. Долой! smile 

*) Пока пусть будет на C#. Потом повзраслеем, поймём, что такое vendor locking, увидим Mono ... Я просто оставлю это здесь. smile 

Это сообщение отредактировал(а) kemiisto - 11.3.2011, 23:23


--------------------
PM MAIL WWW GTalk Jabber   Вверх
Gluttton
Дата 11.3.2011, 23:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Начинающий
***


Профиль
Группа: Завсегдатай
Сообщений: 1170
Регистрация: 28.8.2008
Где: Феодосия

Репутация: 2
Всего: 54



kemiisto, отличный пост, но я думаю, что он больше ТС чем мне ;) .
Хотя я мне есть, что из него почерпнуть, но просто я не обременен требованиями производительности.

Цитата(kemiisto @  11.3.2011,  23:04 Найти цитируемый пост)
Тут нужны читсые нативные незагаженные  плюсики.

Да чего уж там - давай сразу на Asm'e (это пожалуй тоже больше ТС чем тебе).

Цитата(kemiisto @  11.3.2011,  23:04 Найти цитируемый пост)
увидим Mono

Что там с ним не так?


--------------------
Слава Україні!
PM MAIL   Вверх
kemiisto
Дата 11.3.2011, 23:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дикий Кот. =^.^=
****
Награды: 1



Профиль
Группа: Участник Клуба
Сообщений: 3292
Регистрация: 29.7.2007

Репутация: 3
Всего: 160



Цитата(Gluttton @  11.3.2011,  21:28 Найти цитируемый пост)
Да чего уж там - давай сразу на Asm'e (это пожалуй тоже больше ТС чем тебе).

Не, асм тут непричём. Можно, конечно, и из C# повыжимать. Кешировать объекты (повторно использовать), поставив GC на голодный паёк. И многое в таком роде. Но смысла мало. К тому же под С++ и Fortran есть куча дооптимизированных до безумия библиотек для number crunching'а. А вот асм тут как раз никаким боком.

Кстати, на CLR от MS есть забавные ограничения. Например, невозможность создать массив, занимающий больше 2ГБ. А теперь посчитай сколько это будет будет элементов, какого-нибудь серьёзного типа данных. Например, плавабщих чисел с quadruple precision. Семечки.

Даже на x64, кстати, это ограничение. В Mono, вроде, нет. Насколько я помню. Так что серьёзный number crunching я бы рекомендовал запиливать на С++, Fortran. Ada можно ещё.

Цитата(Gluttton @  11.3.2011,  21:28 Найти цитируемый пост)
Что там с ним не так?

Сейчас основная претензия (если говорить о GUI) - ненативный интерфейс на второй по популярности десктоп-платформе. Набирающей популярность к тому же.


--------------------
PM MAIL WWW GTalk Jabber   Вверх
Mormishka
Дата 12.3.2011, 18:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 236
Регистрация: 25.8.2010

Репутация: нет
Всего: нет



kemiisto
Сначало у меня была программа на С++ консольная, я хотел, чтоб она записывала файл в двоичном виде. а читать на шарпе. Так вот на шарпе я не смог прочитать файлы записанные на С++.
http://forum.vingrad.ru/topic-322999.html
PM MAIL   Вверх
kemiisto
Дата 12.3.2011, 19:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дикий Кот. =^.^=
****
Награды: 1



Профиль
Группа: Участник Клуба
Сообщений: 3292
Регистрация: 29.7.2007

Репутация: 3
Всего: 160



Mormishka, а зачем писать в двоичный формат? Пишите в текстовый. Плюс получите возможность в будующем быструю автоматизацию запилить на каком-нибудь скриптовом языке.


--------------------
PM MAIL WWW GTalk Jabber   Вверх
A5uKa
  Дата 14.3.2011, 11:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


TЋ♥s F1rȜ iƧ BurȠiƞg
***


Профиль
Группа: Awaiting Authorisation
Сообщений: 1928
Регистрация: 30.8.2008

Репутация: 3
Всего: 16



Кемисто, ты ведь не представляешь как работает C++ CLI
PM   Вверх
kemiisto
Дата 14.3.2011, 12:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дикий Кот. =^.^=
****
Награды: 1



Профиль
Группа: Участник Клуба
Сообщений: 3292
Регистрация: 29.7.2007

Репутация: 3
Всего: 160



A5uKa, у тебя проблемы с клавиатурой


--------------------
PM MAIL WWW GTalk Jabber   Вверх
A5uKa
Дата 14.3.2011, 12:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


TЋ♥s F1rȜ iƧ BurȠiƞg
***


Профиль
Группа: Awaiting Authorisation
Сообщений: 1928
Регистрация: 30.8.2008

Репутация: 3
Всего: 16



Цитата(kemiisto @ 14.3.2011,  12:03)
A5uKa, у тебя проблемы с клавиатурой

                     ?
PM   Вверх
kemiisto
Дата 14.3.2011, 13:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дикий Кот. =^.^=
****
Награды: 1



Профиль
Группа: Участник Клуба
Сообщений: 3292
Регистрация: 29.7.2007

Репутация: 3
Всего: 160



A5uKa, тупишь чолэ? Я ж тебя и спрашиваю

Цитата(A5uKa @  14.3.2011,  09:42 Найти цитируемый пост)
Кемисто, ты ведь не представляешь как работает C++ CLI


что тут в конце предложения? Точка? Знак вопроса? Знак восклицания?

Теперь понятно?


--------------------
PM MAIL WWW GTalk Jabber   Вверх
Страницы: (3) Все [1] 2 3 
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
Partizan
PashaPash

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, Partizan, PashaPash.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | .NET для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0928 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.