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

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

Войти
Регистрация
Восстановить пароль
 
micha12
0 / 0 / 0
Регистрация: 20.01.2009
Сообщений: 118
#1

Как двум приложениям совместно использовать DLL? - C++

06.10.2009, 05:01. Просмотров 565. Ответов 3
Метки нет (Все метки)

Всем привет,

У меня есть некоторое приложение, которое, загрузившись, вызвало функцию внешнего .dll. В этом .dll есть public переменные. Известно, что каждая отдельная программа, которая подключает к себе .dll, работает со своей собственной копией всех public и static переменных этого .dll.

Мне же нужно, чтобы другая программа получила доступ к именно данной копии этого .dll. Более конкретно, я хочу, чтобы сначала запустилось одно приложение, подключило к себе .dll, поработало с ним, а потом передало другому приложению ссылку на именно этот .dll, чтобы второе приложение, в свою очередь, могло с ним работать.

Как это сделать?

Заранее спасибо!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.10.2009, 05:01
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как двум приложениям совместно использовать DLL? (C++):

Как использовать dll в проекте C++? - C++
Не могу к проекту создать и подключить свою длл. Помогите плиз. Я не до конца понимаю како йименно функционал можно и нужно запихнуть в...

Как создать и использовать DLL с ресурсами? - C++
Собственно, как создавать DLL и использовать ее функции - я знаю. А вот как создать библиотеку, которая будет хранить только ресурсы и как...

Использовать код, написанный на С++ (DLL) в C# - C++
Требуется написать dll некоторых алгоритмов. Я хочу написать их на С++ с применением стандартных stl объектов, Затем компилирую dll, а...

Оставить все как есть || использовать парсер xml || или использовать struct - C++
Собственно имеется код... #include <io.h> #include <string> #include <vector> #include <fstream> #include <iomanip> #include...

Как узнать путь к загруженной DLL из самой DLL? - C++
Создаю небольшую программку в папке c:/test/app/, есть DLL в папке c:/test/dll/. В коде самой dll, после её подгрузки в программу, можно...

ликбез по оконным приложениям - C++
Здравствуйте! Вот и подходит дедлайн по курсачу, а проект застрял на стадии "создал папку курсач" суть проекта - создать приложение для...

3
OnLineOFF
0 / 0 / 0
Регистрация: 05.10.2009
Сообщений: 3
07.10.2009, 14:24 #2
Приветик!
Проблема понятна...
То что Вы там назвали ссылкой на dll_ есть 'дескриптор',
что полностью подчеркивает принадлежность конкретного dll_ модуля вашему адрессному пространству.

Выше упомянутая проблема может быть решена методом наследования таблици дескрипторов родительского процесса. Для этого новый процесс конечно должен быть дочерним по отношению к тому у котрого собирается наследовать таблицу.
Все это делается средствами API.

А теперь, как это все сделать не прибегая к выше упомянутому методу:
В dll_ надо создать 'секцию' доступную всем копиям dll_, такую себе shared память(одно и тоже значение во всех копиях), как это сделать:

Код
#pragma data_seg('Shared')
int global = 0; //Инициализация обязательна
#pragma data_seg()
#pragma comment (linker , '/Section:Shared, rws') //Чтение, запись
Так вот - меняем значение global в одной dll_ изменения отображаются сразу во все спроэкцированных копиях.

Удачи
0
micha12
0 / 0 / 0
Регистрация: 20.01.2009
Сообщений: 118
08.10.2009, 03:55  [ТС] #3
Спасибо за ответ.

А как работает первый подход, с дескрипторами? Нет ли у Вас готового примера, либо ссылки на ресурс, где про это понятно написано?
0
micha12
0 / 0 / 0
Регистрация: 20.01.2009
Сообщений: 118
22.10.2009, 03:22  [ТС] #4
Привет,

Я создал .dll, написал туда такой код, как ты мне написал, но у меня не сработало то, что нужно. Что делать? Можешь прислать пример?

Спасибо.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.10.2009, 03:22
Привет! Вот еще темы с ответами:

Литература по MDI приложениям - C++
Подскажите, пожалуйста, полезные сайты или книги где была бы описана технология создания MDI приложения

Как узнать зависимость DLL-ки от других DLL-ек? - C++
Есть DLL-ка, она в свою очередь подгружает другие DLL-ки, а так же использует соответственно тулфейн свого компилятора и тд. Есть какая...

Как подключить dll на C# к проекту (dll) на С++ - C++
Подскажите, пожалуйста, как подключить dll на C# к проекту (dll) на С++. В интернете много примеров, где показаны примеры по подключению...

Кто может поделиться файлами ogg.dll, vorbis.dll и vorbisfile.dll - 32-х и 64-битными версиями? - C++
Движок перевожу на платформу Win64 и нужно, чтобы разрядность ЕХЕ и DLL совпадали, а в интернете искал 64-битные версии ogg.dll, vorbis.dll...


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

Или воспользуйтесь поиском по форуму:
4
Yandex
Объявления
22.10.2009, 03:22
Ответ Создать тему
Опции темы

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