Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Программирование под Unix/Linux > dlsym() и глобальный указатель на структуру


Автор: andrew_121 13.8.2009, 11:57
В динамике(динамической библиотеке), есть глобальный указатель на структуру. И есть функция которая инициализирует этот указатель.
Код

struct any {
   int count;
};

...

struct any* pany;

...

void myinit() {
   pany = (struct any*)malloc(sizeof(struct any));
   pany->count = 0;
   printf("address = 0x%08x, count = %d\n", (unsigned)pany, pany->count);
}

здесь все правильно.
Но когда из программы делаю:
Код

struct any* p = (struct any*)dlsym(dl, "pany");
printf("address = 0x%08x, count = %d\n", (unsigned)p, p->count);

получаю другой адрес. Почему?

Автор: andrew_121 13.8.2009, 12:57
Вопрос решен.
Нужно было так:
Код

struct any* p = *(struct any**)dlsym(dl, "pany");

Автор: andrew_121 13.8.2009, 13:19
А нет, все же не решен!
Член "count" имеет разные значения. Почему?

Автор: andrew_121 13.8.2009, 14:52
вопрос решен.

Автор: xvr 14.8.2009, 11:06
Тихо сам с собою ....  smile 

Автор: andrew_121 14.8.2009, 11:39
xvr, а что поделаешь....

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)