关于C#:在共享库中使用全局变量

Using a global variable in a shared library

我正在用C编写一个使用全局变量(日志文件结构)的应用程序。 在我的应用程序中,我正在运行时动态加载共享库,并且我想使用指向相同日志文件结构的全局变量来在共享库中进行日志记录。

用简单的方法似乎不可能做到这一点:

  • 将全局变量声明为extern无效,因为dlopen()表示全局变量是未定义的符号
  • 再次定义全局变量将起作用,但是"新"变量将与可执行文件中的"原始"变量不同

任何提示如何解决此问题将是巨大的。

谢谢!


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