多于一个共享库使用的变量值

问题描述

| 我正在用C编写一个应用程序,它同时使用用户定义的横向链接库(使用-l选项)和预加载的动态链接库(使用ld-preload)。现在,我有一个从静态链接库中设置的变量(套接字连接),其他共享库也将使用相同的客户端套接字。 我如何跨库声明和维护此客户端套接字的值,直到从调用过程中完全断开连接为止。 谢谢     

解决方法

        我从来没有做过,但看起来像:
extern int yourfileno;
到静态库的头文件中应该可以正常工作。 在同一个库的c文件之一中声明此全局变量。 确实,这与在库中创建get / set例程相同。 有些人可能认为让静态库声明结构定义是一种更好的做法:
typedef struct {
        int fileno;
        int is_opened;
        ...other stuf;
} StatLibType;
然后让您的主程序调用类似:
StatLibType *statlib_new_connection();
将新创建的结构传递到另一个动态库,以便可以使用它。