向所有人致以诚挚的问候!
所以Linux有 dlopen / dlsym / dlclose / ...函数,但我想知道是否有办法让我的程序来处理它自己的运行过程的某些符号。
基本上就像dlsym一样,但是在调用它的过程中搜索符号。 有这样的事吗?这甚至可能吗?加分点:Windows有这样的东西吗?
编辑 - 进一步澄清:想象一下,我有一个全局变量 foo ,可能存在于我程序的bss或数据段中。在编译时, foo 的存在完全取决于整个程序。在运行时,我想查询某个地方是否有一个名为" foo "的全局符号。如果是这样,请将它放在记忆中。
我需要能够构建符号表,就像链接器在构建共享库时所做的那样。我想这是最大的问题。
如果我有选择权,我有什么选择?
干杯!
答案 0 :(得分:0)
根据http://man7.org/linux/man-pages/man3/dlopen.3.html:
如果 filename 为NULL,则返回的句柄用于主程序。
即。您可以dlopen
作为名称NULL
来自己{。}}。