23 / 21 / 4
Регистрация: 03.11.2010
Сообщений: 169
|
|
1 | |
Превратить консольное приложение на C++ в DLL для использования в C#12.11.2012, 17:51. Показов 4927. Ответов 28
Метки нет (Все метки)
Есть довольно крупное консольное приложение - несколько классов, десятки методов.
Оно принимает с клавиатуры вначале некие параметры и потом в цикле выводит результаты (количество итераций задается). Мне нужны эти результаты в приложении на C#. Как сделать из него динамическую библиотеку? Как организовать этот ввод параметров и вывод результата? (последовательность байт, около 2000) Изменять тип выходного файла и импортировать у себя в приложении я умею.
1
|
12.11.2012, 17:51 | |
Ответы с готовыми решениями:
28
Консольное приложение C++ без использования vcredist Граф. приложение+библиотеки+консольное приложение! Не работает программа без использования консоли. Если использую, то всё прекрасно работает. Консольное приложение + объединение с DLL Подправить консольное приложение работы с dll |
873 / 771 / 173
Регистрация: 11.01.2012
Сообщений: 1,942
|
|
12.11.2012, 19:32 | 2 |
Вот тема замечательная .Но вопроса конкретного нету ....
Не по теме:
0
|
23 / 21 / 4
Регистрация: 03.11.2010
Сообщений: 169
|
||||||
12.11.2012, 22:07 [ТС] | 3 | |||||
Конкретный вопрос. Сейчас у меня в консольном приложении в функции main такой код:
Как это делать, как создать myOcean типа Ocean* (или это оставить здесь в dll в глобальной области?) и вызвать initialize?
0
|
быдлокодер
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,679
|
|||||||||||||||||||||||||||||||
13.11.2012, 00:33 | 4 | ||||||||||||||||||||||||||||||
Насколько я понимаю, dll это процедурное программирование в чистом виде. Имею ввиду использование:
1
|
23 / 21 / 4
Регистрация: 03.11.2010
Сообщений: 169
|
||||||
13.11.2012, 00:46 [ТС] | 5 | |||||
Что-то я сомневаюсь что класс превращается в структуру. В таком случае вся ООП логика моей программы идет к черту.
Как создать namespace, в котором будут все мои классы и методы? Например:
Собрал DLL, не могу ее подключить ибо нету пространства имен.
0
|
Модератор
8908 / 6677 / 918
Регистрация: 14.02.2011
Сообщений: 23,516
|
|
13.11.2012, 00:53 | 6 |
могу предложить тебе следующий вариант
программа на шарпе вызывает программу на плюсах та в свою очередь выдает свои данные не на экран а в файл(можно файл проецируемый в память) а шарповая программа считывает эти данные и использует как нужно
0
|
23 / 21 / 4
Регистрация: 03.11.2010
Сообщений: 169
|
|
13.11.2012, 00:55 [ТС] | 7 |
ValeryS, думал над таким вариантом - много лишних действий.
0
|
Модератор
8908 / 6677 / 918
Регистрация: 14.02.2011
Сообщений: 23,516
|
|
13.11.2012, 01:00 | 8 |
не превращается если явно не задашь компилировать как С
но тогда твои функции из понятных имен будут зашифрованы по соглашению плюсов вообще длл проще писать с нуля, используя наработанный код Добавлено через 3 минуты каких??? один файл на ввод другой на вывод по крайней мере у тебя отлаженная программа и будет работать, а при написании длл тебе все придется писать тестировать заново можно ведь сделать такой вариант а потом не торопясь написать длл
0
|
23 / 21 / 4
Регистрация: 03.11.2010
Сообщений: 169
|
|
13.11.2012, 01:01 [ТС] | 9 |
Я собрал DLL, импортировал добавил ее как ссылку в C#, пишу using Ocean и выдается ошибка мол это тип, а не пространство имен. Как это пространство имен создать?
В заголовочных файлах взял весь код в namespace OceanDll {}, в исполняемых везде написал using namespace OceanDll - получил пол тысячи ошибок.
0
|
быдлокодер
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,679
|
|
13.11.2012, 01:02 | 10 |
0
|
Каратель
|
|
13.11.2012, 01:02 | 11 |
о каком неймспейсе в нативной длл может идти речь? в с++ нет и не было рефлексии
идите читать матчасть без привязки к специфическим технологиям максимум вы можете импортировать функцию с примитивными параметрами с приязкой к COM можно импортиировать и комопненты
0
|
23 / 21 / 4
Регистрация: 03.11.2010
Сообщений: 169
|
|
13.11.2012, 01:06 [ТС] | 12 |
ValeryS, уже никакого в/в нету, есть только пара функций и переменных к которым мне нужен доступ из C#.
Добавлено через 2 минуты Блин. Задача сводится к следующему - есть куча кода на C++, он ничего не вводит и не выводит в консоль. Мне нужно склеить из всего этого DLL и подключить ее в C#, чтоб использовать оттуда 2 метода, которые будут принимать аргументы и возвращать массивы... Это не возможно что ли? Добавлено через 1 минуту http://msdn.microsoft.com/ru-r... 35636.aspx - здесь есть namespace? Нету времени читать матчасть
0
|
Модератор
8908 / 6677 / 918
Регистрация: 14.02.2011
Сообщений: 23,516
|
|
13.11.2012, 01:10 | 13 |
посмотри здесь
Visual Studio 2010 подключение DLL(C++) к проекту на C#
0
|
Каратель
|
|
13.11.2012, 01:11 | 14 |
AlexSun, там есть, но как вы не понимаете что dll это бинарный файл и нативная dll не содержит никакой информации о классах, структурах и неймспейсах потому что в С++ нет рефлексии!!!
Кристиан Нейгел .NET для профессионалов - взаимодействие .NET и COM - там есть пример импорта COM-компонента
0
|
быдлокодер
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,679
|
|
13.11.2012, 01:11 | 15 |
0
|
Модератор
8908 / 6677 / 918
Регистрация: 14.02.2011
Сообщений: 23,516
|
|
13.11.2012, 01:12 | 16 |
0
|
быдлокодер
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,679
|
|
13.11.2012, 01:17 | 19 |
0
|
Каратель
|
|
13.11.2012, 01:17 | 20 |
тогда о каких хедерах речь?
0
|
13.11.2012, 01:17 | |
13.11.2012, 01:17 | |
Помогаю со студенческими работами здесь
20
Как из проекта .dll сделать консольное приложение? Просто консольное приложение требует dll на Винде Создать консольное .NET приложение использующее описанный DLL-модуль Создал первое консольное приложение. Выдает ошибка msvcp140.dll и кириллица слетает Как открыть консольное приложение в .NET через другое консольное приложение .NET Консольное приложение для тестирования. Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |