![]() |
Модераторы: Partizan, gambit |
![]() ![]() ![]() |
|
Mormishka |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 236 Регистрация: 25.8.2010 Репутация: нет Всего: нет |
Как сделать программу которая совместно работают два языка? У меня программа на шарпе, хочу сделать вычислительную часть на C++. Как это можно сделать?
|
|||
|
||||
Gluttton |
|
|||
![]() Начинающий ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1170 Регистрация: 28.8.2008 Где: Феодосия Репутация: 2 Всего: 54 |
Mormishka, для этого необходимо создать Solution в который добавить два Project: один - C#, а второй - C++/CLI.
Затем в проекте на С++ необходимо создать класс реализующий методы реализующую вычислительную часть. В проекте на C# при этом нужно добавить Reference на проект С++ и после этого, где это необходимо можно создавать классы написанные на С++ и вызывать их методы реализующие вычислительную часть. P.S. На самом деле я не знаю ответа на вопрос, но философия .NET такова и это должно работать не только для связки C# + C++/CLI, но и для всех других возможных (например: VB + F#)... -------------------- Слава Україні! |
|||
|
||||
Mormishka |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 236 Регистрация: 25.8.2010 Репутация: нет Всего: нет |
Спасибо, попробую.
|
|||
|
||||
Gluttton |
|
|||
![]() Начинающий ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1170 Регистрация: 28.8.2008 Где: Феодосия Репутация: 2 Всего: 54 |
Рано - сначала попробуй, а то вдруг я чего не того насоветовал ![]() -------------------- Слава Україні! |
|||
|
||||
Fortnox |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 373 Регистрация: 31.10.2008 Где: Ростов-на-Дону Репутация: 2 Всего: 22 |
Никто также не мешает вам написать на c++ dll библиотеку. А потом при помощи P/Invoke использовать ее в .NET программах.
И маленький пример. Это сообщение отредактировал(а) Fortnox - 11.3.2011, 20:54 Присоединённый файл ( Кол-во скачиваний: 6 ) ![]() |
|||
|
||||
jonie |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5613 Регистрация: 21.8.2005 Где: Владимир Репутация: 6 Всего: 118 |
или написать на C++ сделав COM класс, который и использовать через interop-ы
-------------------- Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет... |
|||
|
||||
kemiisto |
|
|||
![]() Дикий Кот. =^.^= ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Участник Клуба Сообщений: 3292 Регистрация: 29.7.2007 Репутация: 3 Всего: 160 |
Gluttton, я чего то не очень уловил смысла твоего совета. Я так понимаю ТС хочет что-то побыстрее посчитать. И чем по-твоему будет отличаться производительность C# и С++/CLI? Всё в итоге будет переведено в IL и запущено поверх CLR. У языков однотипная модель исполнения, производительность будет почти равная. И не факт, кстати, что С++/CLI будет быстрее.
Тут нужны чистые нативные незагаженные ![]() Если есть нужда в суровом number crunching'е, надо делать unix-way:
А COM - жёсткая привязка к платформе. Долой! ![]() *) Пока пусть будет на C#. Потом повзраслеем, поймём, что такое vendor locking, увидим Mono ... Я просто оставлю это здесь. ![]() Это сообщение отредактировал(а) kemiisto - 11.3.2011, 23:23 -------------------- |
|||
|
||||
Gluttton |
|
|||
![]() Начинающий ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1170 Регистрация: 28.8.2008 Где: Феодосия Репутация: 2 Всего: 54 |
kemiisto, отличный пост, но я думаю, что он больше ТС чем мне ;) .
Хотя я мне есть, что из него почерпнуть, но просто я не обременен требованиями производительности. Да чего уж там - давай сразу на Asm'e (это пожалуй тоже больше ТС чем тебе). Что там с ним не так? -------------------- Слава Україні! |
|||
|
||||
kemiisto |
|
|||
![]() Дикий Кот. =^.^= ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Участник Клуба Сообщений: 3292 Регистрация: 29.7.2007 Репутация: 3 Всего: 160 |
Не, асм тут непричём. Можно, конечно, и из C# повыжимать. Кешировать объекты (повторно использовать), поставив GC на голодный паёк. И многое в таком роде. Но смысла мало. К тому же под С++ и Fortran есть куча дооптимизированных до безумия библиотек для number crunching'а. А вот асм тут как раз никаким боком. Кстати, на CLR от MS есть забавные ограничения. Например, невозможность создать массив, занимающий больше 2ГБ. А теперь посчитай сколько это будет будет элементов, какого-нибудь серьёзного типа данных. Например, плавабщих чисел с quadruple precision. Семечки. Даже на x64, кстати, это ограничение. В Mono, вроде, нет. Насколько я помню. Так что серьёзный number crunching я бы рекомендовал запиливать на С++, Fortran. Ada можно ещё. Сейчас основная претензия (если говорить о GUI) - ненативный интерфейс на второй по популярности десктоп-платформе. Набирающей популярность к тому же. -------------------- |
|||
|
||||
Mormishka |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 236 Регистрация: 25.8.2010 Репутация: нет Всего: нет |
kemiisto,
Сначало у меня была программа на С++ консольная, я хотел, чтоб она записывала файл в двоичном виде. а читать на шарпе. Так вот на шарпе я не смог прочитать файлы записанные на С++. http://forum.vingrad.ru/topic-322999.html |
|||
|
||||
kemiisto |
|
|||
![]() Дикий Кот. =^.^= ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Участник Клуба Сообщений: 3292 Регистрация: 29.7.2007 Репутация: 3 Всего: 160 |
Mormishka, а зачем писать в двоичный формат? Пишите в текстовый. Плюс получите возможность в будующем быструю автоматизацию запилить на каком-нибудь скриптовом языке.
-------------------- |
|||
|
||||
A5uKa |
|
|||
TЋ♥s F1rȜ iƧ BurȠiƞg ![]() ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 1928 Регистрация: 30.8.2008 Репутация: 3 Всего: 16 |
Кемисто, ты ведь не представляешь как работает C++ CLI
|
|||
|
||||
kemiisto |
|
|||
![]() Дикий Кот. =^.^= ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Участник Клуба Сообщений: 3292 Регистрация: 29.7.2007 Репутация: 3 Всего: 160 |
A5uKa, у тебя проблемы с клавиатурой
-------------------- |
|||
|
||||
A5uKa |
|
|||
TЋ♥s F1rȜ iƧ BurȠiƞg ![]() ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 1928 Регистрация: 30.8.2008 Репутация: 3 Всего: 16 |
? |
|||
|
||||
kemiisto |
|
|||
![]() Дикий Кот. =^.^= ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Участник Клуба Сообщений: 3292 Регистрация: 29.7.2007 Репутация: 3 Всего: 160 |
A5uKa, тупишь чолэ? Я ж тебя и спрашиваю
что тут в конце предложения? Точка? Знак вопроса? Знак восклицания? Теперь понятно? -------------------- |
|||
|
||||
![]() ![]() ![]() |
Прежде чем создать тему, посмотрите сюда: | |
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, Partizan, PashaPash. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | .NET для новичков | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |