Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.91
AlexSun
17 / 15 / 1
Регистрация: 03.11.2010
Сообщений: 169
#1

Превратить консольное приложение на C++ в DLL для использования в C# - C++

12.11.2012, 17:51. Просмотров 1537. Ответов 28
Метки нет (Все метки)

Есть довольно крупное консольное приложение - несколько классов, десятки методов.
Оно принимает с клавиатуры вначале некие параметры и потом в цикле выводит результаты (количество итераций задается).
Мне нужны эти результаты в приложении на C#.

Как сделать из него динамическую библиотеку? Как организовать этот ввод параметров и вывод результата? (последовательность байт, около 2000)
Изменять тип выходного файла и импортировать у себя в приложении я умею.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.11.2012, 17:51
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Превратить консольное приложение на C++ в DLL для использования в C# (C++):

Консольное приложение C++ без использования vcredist - C++
Доброго времени суток! Написал маленькую программулинку в VS2012, но для запуска на старых машинах она требует vcredist 2012. Возможно...

Подправить консольное приложение работы с dll - C++
Доброго, форумчане! пытаюсь сделать консольное приложение при запуске ей можно указывать путь к подключаемой dll/указать имя...

Как из проекта .dll сделать консольное приложение? - C++
Всем привет еще раз, У меня есть еще один вопрос. Пусть я создал новый проект, типа Win32 .dll, а потом решил переделать его и сделать...

Создал первое консольное приложение. Выдает ошибка msvcp140.dll и кириллица слетает - C++
Насколько я понимаю не хватает dll на пк где НЕ установлена VS2017 Вопрос как вложить эти файлы в исходник и почему кодировка не...

Консольное приложение для тестирования. - C++
Добрый день! Получил задание разработать консольное приложение для тестирования, на основе готовых тестов. Тест представляет собой...

Создать консольное приложение на С/С++ для обработки и печати текста - C++
Создать приложение которое бы -обрабатывала текст -печатала весь текст -печать файла ***печать всех слов содержащих букву А ...

28
ValeryS
Модератор
6651 / 5060 / 470
Регистрация: 14.02.2011
Сообщений: 16,918
13.11.2012, 01:12 #16
и здесь
http://msdn.microsoft.com/en-us/library/aa288468
0
Jupiter
Каратель
Эксперт С++
6556 / 3977 / 227
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
13.11.2012, 01:14 #17
Цитата Сообщение от kravam Посмотреть сообщение
Тогда я по-другому спрошу; ты когда в С# создаёшь объект какого-то класса, ты же подключаешь какой-то хидер?
с каких пор в шарпе можно подклюать сишные хедеры!?
0
ValeryS
Модератор
6651 / 5060 / 470
Регистрация: 14.02.2011
Сообщений: 16,918
13.11.2012, 01:16 #18
Цитата Сообщение от Jupiter Посмотреть сообщение
AlexSun, там есть, но как вы не понимаете что dll это бинарный файл и нативная dll не содержит никакой информации о классах, структурах и неймспейсах потому что в С++ нет рефлексии!!!
сщас еще
все функции лежат в export dll
и если не использовать extern C то в имени функции зашифрованы и имя и класс и количество и тип параметров
0
kravam
быдлокодер
1695 / 882 / 45
Регистрация: 04.06.2008
Сообщений: 5,470
13.11.2012, 01:17 #19
Цитата Сообщение от Jupiter Посмотреть сообщение
с каких пор в шарпе можно подклюать сишные хедеры!?
кто-то сказал сишные? Я не говорил
0
Jupiter
Каратель
Эксперт С++
6556 / 3977 / 227
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
13.11.2012, 01:17 #20

Не по теме:

Цитата Сообщение от ValeryS Посмотреть сообщение
сщас еще
все функции лежат в export dll
и если не использовать extern C то в имени функции зашифрованы и имя и класс и количество и тип параметров
в моей цитате есть хоть слово про функции?


Цитата Сообщение от kravam Посмотреть сообщение
кто-то сказал сишные? Я не говорил
тогда о каких хедерах речь?
0
kravam
быдлокодер
1695 / 882 / 45
Регистрация: 04.06.2008
Сообщений: 5,470
13.11.2012, 01:20 #21
Цитата Сообщение от Jupiter Посмотреть сообщение
тогда о каких хедерах речь?
ну какие там в C# есть файлы, где можно определять класс?
0
AlexSun
17 / 15 / 1
Регистрация: 03.11.2010
Сообщений: 169
13.11.2012, 01:21  [ТС] #22
Через DLLImport и импортирование отдельных функций не получится?

Добавлено через 27 секунд
Цитата Сообщение от kravam Посмотреть сообщение
ну какие там в C# есть файлы, где можно определять класс?
Никаких.
0
kravam
быдлокодер
1695 / 882 / 45
Регистрация: 04.06.2008
Сообщений: 5,470
13.11.2012, 01:24 #23
Цитата Сообщение от AlexSun Посмотреть сообщение
Никаких.
А как же он тогда собрался вызывать методы без объявления объекта класса и, соответственно, самого класса? Если даже файлов для определения классов нет.
0
AlexSun
17 / 15 / 1
Регистрация: 03.11.2010
Сообщений: 169
13.11.2012, 01:31  [ТС] #24
Я не знаю как он собрался вызывать методы без объявления объекта класса и, соответственно, самого класса. Мне поможете?
0
kravam
быдлокодер
1695 / 882 / 45
Регистрация: 04.06.2008
Сообщений: 5,470
13.11.2012, 01:39 #25
Тьфу, я уже запутался. Если ты, AlexSun, не можешь объявить класс (сам же сказал, что нету даже файлов ни заголовочных, никаких, где можно было бы этот класс прописать), как ты будешь создавать объект класса и соответственно, вызывать метод?

Цитата Сообщение от AlexSun Посмотреть сообщение
чтоб использовать оттуда 2 метода
классов нет, объектов нет, а методы есть. Гениально.
0
ValeryS
Модератор
6651 / 5060 / 470
Регистрация: 14.02.2011
Сообщений: 16,918
13.11.2012, 01:49 #26
Цитата Сообщение от kravam Посмотреть сообщение
Если ты, AlexSun, не можешь объявить класс (сам же сказал, что нету даже файлов ни заголовочных, никаких, где можно было бы этот класс прописать), как ты будешь создавать объект класса и соответственно, вызывать метод?
можно написать функции обертки которые внутри библиотеки будет создавать класс, вызывать что надо

Добавлено через 5 минут
вот нашел в своих закладках
http://www.sdteam.com/t206
0
kravam
быдлокодер
1695 / 882 / 45
Регистрация: 04.06.2008
Сообщений: 5,470
13.11.2012, 01:55 #27
Ради двух методов огород городить... Мда... Проще уж как я сказал, две аккуратненькие функции НЕ МЕТОДЫ.
0
Avazart
Эксперт С++
7213 / 5385 / 286
Регистрация: 10.12.2010
Сообщений: 23,791
Записей в блоге: 17
13.11.2012, 02:04 #28
Цитата Сообщение от ValeryS Посмотреть сообщение
могу предложить тебе следующий вариант
программа на шарпе вызывает программу на плюсах
та в свою очередь выдает свои данные не на экран а в файл(можно файл проецируемый в память)
а шарповая программа считывает эти данные и использует как нужно
Думаю самый легкий и не хлопотный путь...
Ну еще можно DDE или COM лепить.
Но принцип тот же что из с ф-циями в dll входные параметры -> выходные параметры и оба вида параметров понятные обоим языкам.

Цитата Сообщение от ValeryS Посмотреть сообщение
Что-то я сомневаюсь что класс превращается в структуру.
не превращается если явно не задашь компилировать как С
но тогда твои функции из понятных имен будут зашифрованы по соглашению плюсов
вообще длл проще писать с нуля, используя наработанный код
Да только стоит заметить что подобные шифровки, делают понятной dll только для данного компилятора.

К примеру ни разу не встречал что бы можно было прикручивать dll с классами скомпилированные в одной IDE прикручивались к проектам в другой IDE
0
AlexSun
17 / 15 / 1
Регистрация: 03.11.2010
Сообщений: 169
13.11.2012, 09:53  [ТС] #29
Цитата Сообщение от kravam Посмотреть сообщение
Тьфу, я уже запутался. Если ты, AlexSun, не можешь объявить класс (сам же сказал, что нету даже файлов ни заголовочных, никаких, где можно было бы этот класс прописать), как ты будешь создавать объект класса и соответственно, вызывать метод?


классов нет, объектов нет, а методы есть. Гениально.
Я тоже запутался. В C++ все есть. Классов несколько, методов оттуда вызвать мне нужно только 2. Все остальное само там делается.
В C# все делается в *.cs файлах...
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.11.2012, 09:53
Привет! Вот еще темы с ответами:

Создать консольное приложение для учета прописанных в доме жителей - C++
Создать консольное приложение для учета прописанных в доме жителей. С консоли должны считываться команды: “init n” – где n – целое...

Какое консольное mini-приложение можно сделать с использованием классов (для практики)? - C++
Подскажите пожалуйста какое то консольное mini-приложение можно сделать с использованием классов. А то книгу читаю но все бистро забивается...

консольное приложение (при запуске приложение открывалось на весь экран) - C++
Как сделать, чтобы при запуске приложение открывалось на весь экран?

Написать dll для дальнейшего использования в программах на других языках - C++
как правильно написать dll чтоб ей можно было пользоваться программам на других языках, например, на delphi


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
29
Yandex
Объявления
13.11.2012, 09:53
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru