![]() |
Модераторы: 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, тупишь чолэ? Я ж тебя и спрашиваю
что тут в конце предложения? Точка? Знак вопроса? Знак восклицания? Теперь понятно? -------------------- |
|||
|
||||
KelTron |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 745 Регистрация: 8.10.2006 Где: Красноярск Репутация: 11 Всего: 38 |
В чужом глазу сучок видишь.. Это сообщение отредактировал(а) KelTron - 14.3.2011, 13:54 -------------------- Тысячами незримых нитей обвивает тебя Закон. Разрубишь одну - преступник. Десять - смертник. Все - Бог. Эвенгар Салладорский, основатель Школы Тьмы. |
|||
|
||||
kemiisto |
|
|||
![]() Дикий Кот. =^.^= ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Участник Клуба Сообщений: 3292 Регистрация: 29.7.2007 Репутация: 3 Всего: 160 |
KelTron, ой ё маё. Народ!!! Опомнитесь вы, ёп! Посмотрите на хронологию постов, вашу мать! Я НАПИСАЛ СВОЙ ПОСТ С ПРЕДЛОЖЕНИЕМ БЕЗ ЗНАКА ПРЕПИНАНИЯ, ЧТОБ АСУКА ЗАДУМАЛАСЬ. НО ОН(А|О) НЕ ПОНЯЛ(А|О). Эту планету спасут только массовые растрелы. ![]() В чужом глазу... Да ну вас... -------------------- |
|||
|
||||
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 |
|
|||
TЋ♥s F1rȜ iƧ BurȠiƞg ![]() ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 1928 Регистрация: 30.8.2008 Репутация: 3 Всего: 16 |
||||
|
||||
kemiisto |
|
|||
![]() Дикий Кот. =^.^= ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Участник Клуба Сообщений: 3292 Регистрация: 29.7.2007 Репутация: 3 Всего: 160 |
Ты тоже не знаешь? ![]() Собственно, я утверждал лишь, что Оно ж CLI. И неважно что С++. Хоть Brainfuck. Там по спецификации Common Language Infrastructure (CLI), исходный код должен компилится в Common Intermediate Language (CIL). Иначе это уже не С++/CLI. А дальше - просто. Я не думаю, что в процессе копиляции в CIL С++ компилятор может задействовать какие-то хитрые оптимизации, которых не может задействовать C# компилятор. Я, скорее, склонен даже думать наоборот. Либо там оптимизаций будет по минимуму, либо больше для C#. Всё-таки ключевый язык платформы, куда более активно развиваемый и поддерживаемый. А когда этот почти одинаковый CIL-код будет запущен Virtual Execution System (VES) разницы не будет. Как то так. Мммм? -------------------- |
|||
|
||||
A5uKa |
|
|||
TЋ♥s F1rȜ iƧ BurȠiƞg ![]() ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 1928 Регистрация: 30.8.2008 Репутация: 3 Всего: 16 |
Да ну не верится, что оно всё конвертирует в CLR. Ведь зачем-то она за собой тянет все плюсовые библиотеки, как минимум она делает invoke всех этих библиотек. В C++ CLI есть такой ref (ссылочный) класс http://www.williamspublishing.com/PDF/978-...1279-4/part.pdf Как я понимаю лишь эта часть портируется в IL, а остальная инфокается, но могу ошибиться. |
|||
|
||||
kemiisto |
|
|||
![]() Дикий Кот. =^.^= ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Участник Клуба Сообщений: 3292 Регистрация: 29.7.2007 Репутация: 3 Всего: 160 |
Таки да. C++/CLI compilers produce mixed-mode assemblies by default. Ошибался. ![]() Тут, например. Всё равно, ИМХО, глупость. Опять-таки vendor locking. Mono не поддерживает. Что естественно из-за озвученной выше генерации mixed-mode assemblies. -------------------- |
|||
|
||||
A5uKa |
|
|||
TЋ♥s F1rȜ iƧ BurȠiƞg ![]() ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 1928 Регистрация: 30.8.2008 Репутация: 3 Всего: 16 |
И vendor ориентированно , так же. Ты не замечаешь этих плюсов ? |
|||
|
||||
Mormishka |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 236 Регистрация: 25.8.2010 Репутация: нет Всего: нет |
Очень много данных, тогда весить будет много. |
|||
|
||||
kemiisto |
|
|||
![]() Дикий Кот. =^.^= ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Участник Клуба Сообщений: 3292 Регистрация: 29.7.2007 Репутация: 3 Всего: 160 |
Каких "этих"? Возможность в идешечке добавить референс? Не смеши. .NET канет в лету лет через 5-6. MS меняет платформы как перчатки. Расскажи про "эти" плюсы тем, кто лет 10 назад "повёлся" на плюсы COM. Сейчас - сплошные минусы. Писать на С++/CLI вычислительную задачу под одну платформу - верх идиотизма. К тому же выделение считалки в отдельное консольное имеет и другие преимущества. Я писал, повторяться не буду. -------------------- |
|||
|
||||
Fitc |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 129 Регистрация: 30.1.2010 Репутация: нет Всего: 4 |
Вы, батенька, пессимист! |
|||
|
||||
wester |
|
||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 675 Регистрация: 27.2.2009 Репутация: 3 Всего: 13 |
да нет, оптимизм это и здравое мнение. вот сам сижу, пишу маленькую халтурку себе с помощью C# и думаю - "боже мой, это ужасный синтаксис, совершенно не понятное управление памятью, простая компиляция которая скрывает многие параметры производительности". и это ужасно. Миллионы и миллионы людей ошиблись как и я. и мне их так же жалко, и и себя, ведь через 2-3 года надо переучиваться опять на какую - то диковинную штуку. Это ужасно и страшно. |
||||
|
|||||
A5uKa |
|
||||
TЋ♥s F1rȜ iƧ BurȠiƞg ![]() ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 1928 Регистрация: 30.8.2008 Репутация: 3 Всего: 16 |
А я скажу, что тут сочетается win api C++ , а это ещё долго не умрёт и самая передавая на текущий момент библиотека под Win, что определяет вполне правильный подход. Возможность увязать всё это с другими языками и технологиями, огромным числом их делает этот подход лучше любого другого. А вот про Nokia Qt ещё вопрос. Nokia телефоны как извесно перешли на Win. И почему-то приложения там тоже писаные под Win , а не на хвалёной Qt. Много-ли сейчас написано на Qt, кроме teamviewer-а и KDE ? Кроссплатформенность нужна далеко не всегда. С этим надеюсь спора не будет, и в тех случаях жизнь не кончается на Qt, меня больше привлекают вот эти вещи http://stackoverflow.com/questions/470468/...ming-frameworks Добавлено через 5 минут и 59 секунд
2-3 года назад так же говорили Добавлено через 6 минут и 36 секунд да и естественно прийдётся учить что-то новое, это часть профессии. |
||||
|
|||||
borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 1 Всего: 135 |
Mormishka, подумай, а так ли правильно обмениваться между управляемым и неуправляемым кодом большим количеством данных ? И всё же, я б посоветовал посмотреть на Unix-way, который тебе предложил kemiisto но можно попробовать обойтись без файлов, а передавать данные через стандартный ввод/вывод. Не знаю как в венде, а в linux'е передача данных из одной программы в другую через стандартный ввод/вывод оптимизирована донельзя (вплоть до использования shared-memory). Вот только не спрашивай меня, как на шарпе читать из stdout консольной программы. Я этого не знаю. А форум на 99,9(9)% знает ![]() -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
kemiisto |
|
||||||||||
![]() Дикий Кот. =^.^= ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Участник Клуба Сообщений: 3292 Регистрация: 29.7.2007 Репутация: 3 Всего: 160 |
Пьёшь на работе? Я не понял ничего. Во-первых, каким образом факт написания на С++, а не на С++/CLI отменяет возможность доступа к Win API? Во-вторых, зачем нужен этот доступ в числодробилке? В-третьих, если ты считаешь, Win API лучшей библиотекой, у меня для тебя плохие новости. Начнём с того, что это не библиотека. Лучшая - я даже комментировать не буду. Если под лучшей библиотекой имелся ввиду .NET Framework, то логики вообще никакой. И опять-таки это не библиотека.
Nokia приобрела Qt с одной целью - ускорить портирование на свои мобильные девайсы. На десктопе к Qt всё было хорошо. И будет. Во-перых, много. Во-вторых, "кроме KDE" - спасибо, поржал. Ой, и кто бы говорил. Много ли написано на .NET? Haskell? F#? Вот прямо сейчас. У меня стоит VLC Media Player, Avogadro, GaussView, KchmViewer, DjView Viewer. А что у меня написано на .NET? Эммм... Ничего? Нет, вру! 3RVX же. Но тупит жутко. Идём на сайт автора, читаем:
Вот, собственно, и всё, на что способен .NET.
Ты точно со мной разговариваешь? И так и случилось. WPF, WCF и прочая ересь. Просто, не стали переименовывать .NET Framework, чтоб не испугать массы.
Во-первых, это чушь. Во-вторых, ты уже третий десяток лет, я так понимаю, в профессии, чтобы такие выводы делать? Поговори со старшими, узнай. А правда в том, что это не часть никакой профессии. Даже Спольски про это писал. Это навязанное мнение. Ты всегда должен быть позади и догонять. Марионетка. Фи быть так(им|ой)! ![]() -------------------- |
||||||||||
|
|||||||||||
kemiisto |
|
|||
![]() Дикий Кот. =^.^= ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Участник Клуба Сообщений: 3292 Регистрация: 29.7.2007 Репутация: 3 Всего: 160 |
Устанавливаю Skype. ![]() -------------------- |
|||
|
||||
A5uKa |
|
|||
TЋ♥s F1rȜ iƧ BurȠiƞg ![]() ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 1928 Регистрация: 30.8.2008 Репутация: 3 Всего: 16 |
Ну не только WinAPI ))) Так же другие сишные библиотеки. Тут я имею ввиду именно библиотеки ( windows.h и т д ) , уйма системных вещей написана на си, в том числе с плюсами.
Да, имеля ввиду .NET, да, не библиотека, но именно на нём на мой взгляд сейчас модно писать различного рода интерфейсы, формы, web... На Haskell и F# написано действительно мало ) А вот про .NET ты так зря. Уйма коммерческого софта на продажу написана на .NET, это не для кого не секрет и число подобного софта растёт достаточно бысто. Да и серьёзных разработак достаточно много. Если смотреть не в сторону утилит, месседжеров и видеоплееров, а скажем современные игрушки, MSSQL и т д и т п. |
|||
|
||||
kemiisto |
|
||||
![]() Дикий Кот. =^.^= ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Участник Клуба Сообщений: 3292 Регистрация: 29.7.2007 Репутация: 3 Всего: 160 |
Я так и не понял. Где здесь аргумент за С++/CLI?
Ключевые слова выделены. Должен ли я говорить, что мода приходит и уходит?
А на Qt прям мало. ![]() -------------------- |
||||
|
|||||
Mormishka |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 236 Регистрация: 25.8.2010 Репутация: нет Всего: нет |
borisbn,
Так я и имею ввиду unix-way. Создаю консольное приложение С++, которое принимает in.* выдает out.*. Этот процесс вычисления может и по 12 часов занимать. А под дот нет мне просто нужно смотреть данные out,графики и прочее. |
|||
|
||||
![]() ![]() ![]() |
Прежде чем создать тему, посмотрите сюда: | |
|
Используйте теги [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. |