значение переменной, используемой более чем одной общей библиотекой - PullRequest
1 голос
/ 13 июня 2011

Я пишу приложение на C, в котором используется как пользовательская библиотека, связанная со звуком (используя опцию -l), так и динамически связанная библиотека, которую я предварительно загружаю (используя ld-preload).Теперь у меня есть переменная (соединение с сокетом), которая настраивается из статически связанной библиотеки, и этот же сокет клиента должен использоваться и другими общими библиотеками.

Как мне объявить и сохранить значение thisклиентский сокет между библиотеками до тех пор, пока соединение не будет прервано исключительно из вызывающего процесса.

Спасибо

1 Ответ

1 голос
/ 13 июня 2011

Я никогда не делал этого, но похоже, что:

extern int yourfileno;

в заголовочный файл для статической библиотеки должно работать.Объявите эту глобальную переменную в одном из файлов c для той же библиотеки.

На самом деле это то же самое, что создание процедур get / set в библиотеке.

Некоторые могут посчитать целесообразным иметьстатическая библиотека объявляет определение структуры:

typedef struct {
        int fileno;
        int is_opened;
        ...other stuf;
} StatLibType;

Затем попросите основную программу вызвать что-то вроде:

StatLibType *statlib_new_connection();

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...