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

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

Войти
Регистрация
Восстановить пароль
 
Dimmak
4 / 4 / 0
Регистрация: 10.12.2012
Сообщений: 170
#1

Распространение данных между приложениями с использованием DLL - C++

25.05.2014, 06:14. Просмотров 310. Ответов 5
Метки нет (Все метки)

Возможно ли использовать dll как "ретранслятор" данных для приложений?
Те первым приложением вызывается функция "set", которая устанавливает переменную i+= 1, a второе приложение вызывает функцию "get", которая возвращает значение переменной i.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include "stdafx.h"
#include <windows.h>
#include <iostream>
using namespace std;
 
//Function declarations
extern "C" __declspec(dllexport) int __cdecl Set() ;
extern "C" __declspec(dllexport) int __cdecl Get() ;
 
BOOL APIENTRY DllMain( HANDLE hModule, DWORD  ul_reason_for_call, LPVOID lpReserved ){ return TRUE ; }
 
int i= 0 ;                      
__declspec(dllexport) int __cdecl Set()
{ i+= 1 ; return i ; }
 
__declspec(dllexport) int __cdecl Get()
{ int j= i ; if( i> 0){ i= 0 ;} return j ; }
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.05.2014, 06:14     Распространение данных между приложениями с использованием DLL
Посмотрите здесь:

C++ Распространение кода программы
C++ Технология обмен данными между приложениями
C++ Как обмениваться данными между приложениями в сети?
C++ Передача данных между двумя приложениями.
C++ Обмен данными между двумя приложениями по системе клиент-сервер
C++ Распространение приложений, написанных на VS2010
Распространение функции на всю программу C++
Сообщения между win32 приложениями C++
Обмен между приложениями C++
Распространение игр на SDL C++
C++ Ошибки с использованием общих MFC dll
Как происходит линковка между проектом и DLL? C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Вованя
122 / 122 / 47
Регистрация: 20.02.2014
Сообщений: 432
25.05.2014, 06:20     Распространение данных между приложениями с использованием DLL #2
Dimmak, если я не ошибаюсь, то каждый экземпляр библиотеки загружается в адресное пространство каждого приложения, то есть, так не получится, нужно использовать какое-то межпроцессное взаимодействие(каналы, сокеты, файлы и т.д)
Dimmak
4 / 4 / 0
Регистрация: 10.12.2012
Сообщений: 170
25.05.2014, 06:59  [ТС]     Распространение данных между приложениями с использованием DLL #3
Цитата Сообщение от Вованя Посмотреть сообщение
каждый экземпляр библиотеки загружается в адресное пространство каждого приложения
Да, это так. А если с использованием pointer? Теоритически каждый длл, загруженный в адресное пространство каждого из приложений, будет использовать один и тот же адрес памяти.
Вованя
122 / 122 / 47
Регистрация: 20.02.2014
Сообщений: 432
25.05.2014, 07:16     Распространение данных между приложениями с использованием DLL #4
Цитата Сообщение от Dimmak Посмотреть сообщение
использовать один и тот же адрес памяти.
Ну и что, это ведь только виртуальный адрес, который транслируется потом в физический, а вот как раз таки физический адрес приложений не пересекаются с друг другом, то есть у разных приложений адрес переменной может быть одинаковый(точнее даже адреса начала сегментов одинаковый), но это не значит, что это один и тот же физический адрес. Тут только, как я говорил, либо каналы, либо сокеты, либо файлы, ну и чего может быть еще.
Убежденный
Системный программист
Эксперт С++
15099 / 6794 / 1073
Регистрация: 02.05.2013
Сообщений: 11,105
Завершенные тесты: 1
25.05.2014, 13:29     Распространение данных между приложениями с использованием DLL #5
Цитата Сообщение от Dimmak Посмотреть сообщение
Теоритически каждый длл, загруженный в адресное пространство каждого из приложений, будет использовать один и тот же адрес памяти.
Не факт. dll могут быть загружены по разным адресам. Память выделяется
тоже по разным адресам. В общем, это условие будет срабатывать лишь изредка.
Dimmak
4 / 4 / 0
Регистрация: 10.12.2012
Сообщений: 170
26.05.2014, 04:11  [ТС]     Распространение данных между приложениями с использованием DLL #6
Цитата Сообщение от Убежденный Посмотреть сообщение
dll могут быть загружены по разным адресам. Память выделяется
тоже по разным адресам. В общем, это условие будет срабатывать лишь изредка.
Ясно... Одним вопросом меньше.
Yandex
Объявления
26.05.2014, 04:11     Распространение данных между приложениями с использованием DLL
Ответ Создать тему
Опции темы

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