Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.12.19;
Скачать: CL | DM;

Вниз

Переменные в DLL.   Найти похожие ветки 

 
novice__man   (2004-12-02 17:42) [0]

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


 
Александр Иванов ©   (2004-12-02 17:56) [1]

Один из вариантов: Описать, глобально, переменную и написать интерфейс доступа к ней(процедуру для изменения и функцию для получения значения).


 
Просто Джо ©   (2004-12-02 17:57) [2]

Использовать файлы, отображенные в память (CreateFileMappingEx). Примеров полно


 
Александр Иванов ©   (2004-12-02 17:58) [3]

Прошу прощения, запарился :).


 
Просто Джо ©   (2004-12-02 18:02) [4]

здесь -Ex - лишнее ;)

Еще раз:
 CreateFileMapping/OpenFileMapping
 MapViewOfFile(Ex)


 
novice__man   (2004-12-02 18:02) [5]

Просто Джо ©   (02.12.04 17:57) [2]
Пока на этом остановлся.
Видимо прийдется так и делать!


 
Просто Джо ©   (2004-12-02 18:03) [6]

novice__man   (02.12.04 18:02) [5]

>> Видимо прийдется так и делать!

А что так скептически? Это очень удобный и совершенно законный способ. Что называется "без извращений".


 
novice__man   (2004-12-02 18:12) [7]

Просто Джо ©   (02.12.04 18:03) [6]
Пока еще ни разу не занимался этим вопросом.


 
Yuri-7   (2004-12-02 23:05) [8]

В DLL пишешь:
...
var1: integer;
var2: shortstring;
exports var1,var2;

В вызывающей программе:
...
var
pvar1: Pinteger;
pvar2: Pshortsring;
...
begin
 Handle := LoadLibrary("test.DLL");  
 pvar1:=GetProcAddress(Handle, ‘var1’);
 pvar2:= GetProcAddress(Handle,‘var2’);
..
end;
Далее pvar1^ и pvar2^ можно использовать, как значения переменных для считывания и записи.


 
palva ©   (2004-12-02 23:26) [9]

А если адрес одной из этих переменных вернет какая нибудь функция из DLL, можно ли этим адресом воспользоваться в основной программе? Иными словами общее ли у этих загрузочных модулей адресное пространство?


 
Yuri-7   (2004-12-03 05:38) [10]

Похоже, что можно. Пространство не общее, у DLL все-таки свое, но доступное


 
novice__man   (2004-12-03 07:31) [11]

uri-7   (02.12.04 23:05) [8]
При каждом вызове DLL создается свое адресное пространство (!!!), хотя физически загруженна одна копия библиотеки!!!
Так вот ваш пример не демонстрирует РАСШАРИВАНИЯ ресурса в библиотеке!
А с доступом к ресурсам, функциям, процедурам ОДНОГО экземпляра проблем не существует.



Страницы: 1 вся ветка

Текущий архив: 2004.12.19;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.023 c
8-1096018445
PashkaCool
2004-09-24 13:34
2004.12.19
Как исключить из BitMap синий цвет?


14-1101728392
КаПиБаРа
2004-11-29 14:39
2004.12.19
А зачем все время ИМХО приписывать?


9-1092945950
miek
2004-08-20 00:05
2004.12.19
GLScene: переключение режимов рендеринга


4-1099302224
IGusak
2004-11-01 12:43
2004.12.19
Drag&Drop


14-1101575378
Petia
2004-11-27 20:09
2004.12.19
Анкета