| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C++ Builder > Переменные, доступные везде |
| Автор: petlyura 15.8.2008, 09:02 | ||
| Есть два exe-файла и статическая библиотека. Как сделать так, чтобы переменные (строковые, целые) были доступны везде (в этих 2 исполн. файлах и библиотеке)? Например, меняю значение переменной Path = "C://"; в 1.exe, после этого читаю в 2.exe значение Dir = Path; или в библиотеке Dir = Path; и Dir получается,равным Path. Объявлял эти переменные в статич.библ. как
В файлах стат.библ., использующих эти переменные, указанно #define SUBD_DLL в ехе: #define SUBD_APP и подключен файл, где определены, Path и GraphTimesInterval. Работает! А потом пишу новые классы, функциональность и т.п. и перестает работать. Где-то получается 3 варианта: Dir = Path; Отладчик показывает значения переменных 1) Dir = NULL; Path = NULL, хотя до этого Path = "C:\\" 2) Dir = NULL; Path = "C:\\"; 3) Dir = "C:\\"; Path = NULL; это вообще самое удивительное. Подозреваю, что может это как-то зависит от подключения файлов, а то у меня как-то лихо накручено, например, есть client.h, kadr.h, dbd.h В client'e #include "kadr.h" #include "dbd.h" В kadr'e #include "dbd.h" Только все в больших масштабах. Подскажите, пожалуйста, решение |
| Автор: petlyura 15.8.2008, 11:48 |
| Млин, нестабильно все это! Может в реестр писать и читать оттуда, чтоб наверняка? Писать в файл не надежно, т.к. GetCurrentDir() в зависимости от того, где прога гуляет (у меня кучу директорий вокруг, откуда берутся рисунки, файлы описания и все такое), может выдавать разные значения. И я могу файл не найти или его удалят. |
| Автор: Lazin 15.8.2008, 11:57 |
| в статической библиотеке не нужно использовать можно просто считать что вместо статической библ. у тебя в проекте соответствующий срр файл |
| Автор: xvr 15.8.2008, 14:48 | ||
Никак Если у тебя библиотека динамическая, то она будет загруженна в одном экземпляре в каждое приложение, где используется. Но адремные пространства самих приложений друг с другом не пересекаются, т.е. переменные опять же свои собственные у каждого приложения. Однако, в динамической библиотеке можно сделать shared сегмент, все данные в нем будут общими для всех экземпляров данной библиотеке во всех программах, где она используется. Однако это сложно использовать по 3м причинам:
|