| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Для новичков > создание и работа с dll фалами |
| Автор: Kirill89 23.1.2009, 19:51 |
| Доброе время суток. Я недавно столкнулся с задачей и никак не могу разобраться как её реализовать, очень прошу мне помочь. Есть некоторая программа на C#, мне нужно написать и использовать в ней dll файл, на C++, который будет содержать функцию по чтению файла (текстового), с параметром (путь к файлу) и возвращать значение string (содержимое фала). и аналогично по записи в файл. Вопросы такие: 1) как сделать рабочий dll файл, используя visual studio 2005 и синтаксис С++? 2) как этот файл подключить к c# или visual basic? 3) как осуществить работу с файлами и текстовой строкой в таком dll? Буду очень благодарен, особенно если с примером и инструкцией =) |
| Автор: GoldFinch 23.1.2009, 20:03 |
| начни с F1 там все написано |
| Автор: Kirill89 23.1.2009, 20:40 |
| GoldFinch, забавно, может ещё пример покажешь? Я же не для прикола спрашиваю. Такой пример не должен занять много времени, а это мне ОЧЕНЬ поможет разобраться. |
| Автор: Rififi 23.1.2009, 21:28 |
| Kirill89, 1. www.google.ru => "c++ dll example" 2. www.google.ru => "c# c++ p/invoke" 3. www.google.ru => "c# c++ p/invoke" |
| Автор: shara 23.1.2009, 23:12 | ||||
| в общем расскажу как делал я, правда насчет С# ничего не знаю я с этим зверем не сталкивался. создаем ДЛЛину для этого в MsVC2008 (звыняй 2005 нету считай пол пути уже есть. Теперь тебе нужно описать функцию DllMain - эта функция вызывается с параметром ul_reason_for_call = DLL_PROCESS_ATTACH и тебе нужно обработать его, это так называемая инициализация библиотеки. похожий параметр (DLL_PROCESS_DETACH) функция DllMain принимает и перед тем как библиотека будет выгружаться из памяти. Все остальные функции описываешь как в обычной программе, с класами не работал - но они тебе покаместь и не нужы. Для того чтобы другие приложения могли вызывать функции из твоей библиотеки тебе в проекте нужно будет создать *.def файл в котором нужно показать компилятору какие функции будут видны вне библиотеки. Выглядит он приблизительно так
собсно и все. Компилим библиотеку. Чтобы подгрузить свою ДЛЛ к проге использем LoadLibrary. но тебе еще нужно узнать адреса функций находящихся в библиотеке, это делается так:
и еще, чувак если с англиqским не проблема - не ленись юзать MSDN |
| Автор: Kirill89 24.1.2009, 00:15 |
| shara, во, большое спасибо! dll получилась, но как её подключить...? через add->existing item не получилось - программа не видит функций. Добавлено через 2 минуты и 6 секунд разобрался. всем спасибо. |
| Автор: shara 24.1.2009, 00:23 |
| Kirill89, you are wellcom |