Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Глобальные переменные в DLL

499
01 мая 2007 года
madjahed
149 / / 14.01.2004
Почему-то в DLL не работают глобальные переменные. Т.е.:

int a=0;

_declspec(dllexport) extern "C" void Calc()
{
a=2;
}

После вызова Calc() a=0. Что делать, почему значения глобальных переменных не слхраняются?
8.0K
01 мая 2007 года
Duality27
49 / / 01.12.2006
Скорее всего функция Calc() не стартует
499
01 мая 2007 года
madjahed
149 / / 14.01.2004
Стартует. По крайней мере в дебаггере Builder'a.
497
01 мая 2007 года
IL84
267 / / 24.04.2003
А как Вы определили, что после вызова а=0? Не стоит забывать, что в каждом процессе своя копия вашей dll со своими глобальными переменными.
8.7K
01 мая 2007 года
Rubicon
55 / / 28.10.2005
Вот что удалось найти в сети (особо не напрягаясь :)) :

в dll объявляем переменную так:
extern "C" __declspec(dllexport) int ggggg = 321;

в приложении достаем ее так:
HINSTANCE Lib_DLL = LoadLibrary("dll.dll");
int *Lib_Target = (int*) GetProcAddress(Lib_DLL,"_ggggg");
printf("%d", *Lib_Target); // Печатает 321

еще как вариент изменить Calc таким образом:
_declspec(dllexport) extern "C" int Calc()
{
a=2;
return a;
}
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог