在共享库中使用全局variables

我正在写一个使用全局variables(日志文件结构)的应用程序。 在我的应用程序中,我在运行时dynamic加载共享库,我想使用指向相同日志文件结构的全局variables来执行共享库中的日志logging。

这在简单的方法中似乎不可能:

  • 将全局variables声明为extern将不起作用,因为dlopen()是全局variables是一个未定义的符号
  • 再次定义全局variables将会起作用,但“新”variables将不会与可执行文件中的“原始”variables相同

任何提示如何解决这将是伟大的。

谢谢!

你需要用-rdynamic标志(例如: gcc -g -rdynamic -o main main.c编译你的主应用程序,并用extern在你的动态库中声明全局变量。