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

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

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

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

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

Всем привет,

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

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

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

Заранее спасибо!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.10.2009, 05:01     Как двум приложениям совместно использовать DLL?
Посмотрите здесь:

Как использовать 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...

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

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

Использование if совместно с case - C++
Добрейшего времени бытия, товарищи! У меня возник вот такой вопрос:"Можно ли сделать IF по результату выбора какого-то SWITCH-CASE?"? ...

Как построить график в Visual Studio C++ по двум массивам? - C++
Есть два массива, полученных в результате аппроксимации, вот код: #include "stdafx.h" #include <iostream> #include <stdio.h> ...

Как сделать ,чтобы строки двумерного массива были кратные двум? - C++
Как сделать ,чтобы строки двумерного массива были кратные двум?То есть когда я заполняю массив , первая строка заполняется во вторую , а...

Есть структура, компилятор считывает некоторые её поля ТОЛЬКО из адресов, кратным двум, а их там нет! (полей), как быть? - C++
То есть вот структура: struct TGAHEADER { char IdLength; char ColourMapType; char DataTypeCode; ...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
OnLineOFF
0 / 0 / 0
Регистрация: 05.10.2009
Сообщений: 3
07.10.2009, 14:24     Как двум приложениям совместно использовать DLL? #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_ изменения отображаются сразу во все спроэкцированных копиях.

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

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

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

Спасибо.
Yandex
Объявления
22.10.2009, 03:22     Как двум приложениям совместно использовать DLL?
Ответ Создать тему
Опции темы

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