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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Импорт C++ в C# для вызова, вызов c++ под C# 
V
    Опции темы
Теги: нет
Fieral
Дата 24.3.2008, 21:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 227
Друзей: 0; Групп: 0
Регистрация: 10.12.2007

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



Есть программа консольная на C++ (исходник), нужно вызвать её под C#, дать данные на съедение, получить результаты.

1)Как это можно сделать?
2) Стоит ли компилить  C++ прогу в exe и вызывать из под C#?
3) Может есть смысл перегнать C++ в DLL и вызывать в C#? Как это сделать?
4) Может куда погуглить? Куда?

Это сообщение отредактировал(а) Fieral - 24.3.2008, 21:48


--------------------
Если собака свернулась калачиком, значит будет дождь, а если сидит выпучив глаза, значит у неё запор.

PM MAIL   Вверх
Optimus
Дата 24.3.2008, 21:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 186
Друзей: 0; Групп: 0
Регистрация: 1.9.2007

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



Цитата(Fieral @  24.3.2008,  21:47 Найти цитируемый пост)
3) Может есть смысл перегнать C++ в DLL и вызывать в C#? Как это сделать?

подключение DLL 
и поиск по форуму


--------------------
"постановка задачи наполовину решает саму задачу"
PM MAIL   Вверх
Fieral
Дата 24.3.2008, 21:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 227
Друзей: 0; Групп: 0
Регистрация: 10.12.2007

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



А как DLL-ку получить?


--------------------
Если собака свернулась калачиком, значит будет дождь, а если сидит выпучив глаза, значит у неё запор.

PM MAIL   Вверх
Optimus
Дата 24.3.2008, 22:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 186
Друзей: 0; Групп: 0
Регистрация: 1.9.2007

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



Google -> C++ Создание DLL

Создание DLL


--------------------
"постановка задачи наполовину решает саму задачу"
PM MAIL   Вверх
Fieral
Дата 24.3.2008, 22:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 227
Друзей: 0; Групп: 0
Регистрация: 10.12.2007

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



Так......
Я создал проект Class Library в Visual Studio 2005 с именем Polinom.
Скопировал туда все .cpp и .h файлы.
Откомпилил успешно.
Зашёл в Debug.

там нашёл:

app.res
AssemblyInfo.obj
BuildLog.htm
mt.dep
Polinom.dll.intermediate.manifest
Polinom.obj
Polinom.pch
Stdafx.obj
vc80.idb VC++
vc80.pdb

а где DLL?


--------------------
Если собака свернулась калачиком, значит будет дождь, а если сидит выпучив глаза, значит у неё запор.

PM MAIL   Вверх
marcusmae
Дата 24.3.2008, 23:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


stravaganza
**


Профиль
Группа: Участник
Сообщений: 874
Друзей: 1; Групп: 1
Регистрация: 26.3.2006

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



Цитата(Fieral @  24.3.2008,  22:57 Найти цитируемый пост)
а где DLL?


А по ссылке, которую для Вас нашли, читали что написано?


--------------------
ἀπὸ μηχανῆς θεός
PM MAIL ICQ GTalk   Вверх
Fieral
Дата 24.3.2008, 23:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 227
Друзей: 0; Групп: 0
Регистрация: 10.12.2007

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



Хорошо, что понимается под фразой:


Если длл-ка не C++/CLI, то нужно:
1. добавить во все функции, которые планируется вызывать в др. проекте, модификаторы:код C++

        extern "C" __declspec(dllexport) // дальше - тип возвр. значения и имя функции как обычно

?


--------------------
Если собака свернулась калачиком, значит будет дождь, а если сидит выпучив глаза, значит у неё запор.

PM MAIL   Вверх
marcusmae
Дата 24.3.2008, 23:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


stravaganza
**


Профиль
Группа: Участник
Сообщений: 874
Друзей: 1; Групп: 1
Регистрация: 26.3.2006

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



Fieral, понимается, что смысл создания длл состоит в том, что какие-то функции она экспортирует, то есть, грубо говоря, делает публичными к использованию теми, кто эту библиотеку получит. Если библиотека ничего не экспортирует, то её почти не существует (как у Вас и получилось).

Хм, кстати, по косвенным признакам (AssemblyInfo.obj) Вы создали C++ CLI Dynamic Link Library. Когда как при Вашей конструкции достаточно было бы создать Win32 Dynamic Link Library. Это немного разные вещи, да и Вам просто больше придётся разбираться.

Цитата

Если длл-ка не C++/CLI, то нужно:


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


--------------------
ἀπὸ μηχανῆς θεός
PM MAIL ICQ GTalk   Вверх
Fieral
Дата 25.3.2008, 00:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 227
Друзей: 0; Групп: 0
Регистрация: 10.12.2007

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



Кароче, я написал C# насадку на exe файл. Осталось выяснить как сделать чтоб окно консоли не выскакивало в процессе выполнения.


--------------------
Если собака свернулась калачиком, значит будет дождь, а если сидит выпучив глаза, значит у неё запор.

PM MAIL   Вверх
Fieral
Дата 25.3.2008, 01:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 227
Друзей: 0; Групп: 0
Регистрация: 10.12.2007

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



p.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;


--------------------
Если собака свернулась калачиком, значит будет дождь, а если сидит выпучив глаза, значит у неё запор.

PM MAIL   Вверх
Google
  Дата 2.9.2010, 22:41 (ссылка)  





  Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

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


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

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


 


Rambler's Top100

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


Реклама на сайте

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