Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Последние темы форума

Показать новые сообщения »

Почтовая рассылка

Подписчиков: 11734
Последний выпуск: 19.06.2015

DLL-библиотека для вывода данных короткого файла в NTFS

70K
04 июня 2011 года
Zhooravlik
3 / / 04.06.2011
Задача - написать проект, который будет отображать данные файла. Готовый проект вроде как был, но оказалось, что нужно делать один проект ДЛЛ и его запустить (с Debug-ом dll тоже нужна помощь). А у меня проект разбит на две части: 1- создание dll, 2- клиент, считывающий файл, экспортирующий функции из dll и отображающий всё это в ListBox-e. Как это объединить правильнее и не сложно ли это?
Работаю в Visual Studio 2010. Язык: С++
63K
05 июня 2011 года
SimSonic
16 / / 14.03.2011
Цитата: Zhooravlik
А у меня проект разбит на две части: 1- создание dll, 2- клиент, считывающий файл, экспортирующий функции из dll и отображающий всё это в ListBox-e.


Не очень понятно, что за функции в .dll? Если .exe и считывает файл, и показывает содержимое в listbox.

Цитата: Zhooravlik
Как это объединить правильнее и не сложно ли это? Работаю в Visual Studio 2010. Язык: С++ ... (с Debug-ом dll тоже нужна помощь).


Значит так, во-первых стоит понять, что нету никакой разницы между .exe и .dll - и то, и то выполняют написанный тобой код. Разница только в расширении файла и виде точки входа: WinMain в .exe, и DllMain в .dll (аргументы см. в MSDN). Для отладки, например, т.к. у тебя уже есть .exe, который экспортирует функции .dll, можно поступить довольно просто:
1. вот у тебя в Solution есть эти два проекта;
2. первый - .exe, он только подгружает твою .dll, и вызывает какую-нибудь функцию:
2.1. Динамически через LoadLibrary.
2.2. Статически через зависимости проектов (Project Dependencies).
3. второй - .dll, в которой ты пишешь всё, что по существу надо - открытие файла и/или отображение его;
4. придумываешь, откуда вызывать этот код - или из экспортируемой функции, или для отладки сразу в DllMain (так даже не надо в .exe вызывать твои эксп.функции).
5. .dll пр.кнопкой мыши, = Startup Project, F5, выбираешь свой .exe в ответ на вопрос "какой файл запустить", и всё потенциально работает и привычно.

70K
05 июня 2011 года
Zhooravlik
3 / / 04.06.2011
Цитата: SimSonic


4. придумываешь, откуда вызывать этот код - или из экспортируемой функции, или для отладки сразу в DllMain (так даже не надо в .exe вызывать твои эксп.функции).
5. .dll пр.кнопкой мыши, = Startup Project, F5, выбираешь свой .exe в ответ на вопрос "какой файл запустить", и всё потенциально работает и привычно.



Не понял эти два пункта.. Особенно пятый. Где на длл нажимать правой кнопкой мыши? Которая в папке с проектом лежит либо которая прямо в solution explorer-е - так там нет пункта Startup Project...

И два эти проекта как объединять? Достаточно ли все файлы *.cpp из проекта с Dll перенести в проект клиента командой "Add existing..."? Если этого будет достаточно, то где прописывать #include "dllmain.h" например?

41K
09 июня 2011 года
kisssko
108 / / 28.10.2010
DllMain не нужен. Его можно не прописывать, да и вообще, пользоваться только в крайнем случае, ибо много подводных камней.
А так, в исходнике dll должны быть только экспортируемые функции. Это же библиотека функций.

И не надо проекты объединять. Просто в свойствах проекта dll задать путь к .exe файлу, который нужно будет запускать.
А уж использовать dll-ку он будет по своему усмотрению. Главное, чтоб он это dll-ку увидел.

Знаете кого-то, кто может ответить? Поделитесь с ним ссылкой.

Ваш ответ

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог