是否可以在windows中获取静态库中定义的函数的地址?

是否可以在windows中获取静态库中定义的函数的地址?,windows,winapi,static-libraries,static-linking,Windows,Winapi,Static Libraries,Static Linking,是否有任何方法可以获取已链接到某个应用程序的静态库(.lib)中定义的函数的地址 谢谢静态库只不过是对象文件的存档(如.ZIP文件) 当您针对静态库进行链接时,链接器将检查需要哪些对象文件,并将它们链接到可执行文件。结果与在项目中直接编译库的源代码完全相同 因此,实际的问题是:是否有可能在可执行文件中找到非静态函数的地址 某些链接器(如GNU)默认情况下甚至在没有调试信息的项目中生成符号表。在这种情况下,您可以解析符号表。但是,许多链接器不创建此符号表。在这种情况下,所有函数名的信息都会丢失,因

是否有任何方法可以获取已链接到某个应用程序的静态库(.lib)中定义的函数的地址


谢谢

静态库只不过是对象文件的存档(如.ZIP文件)

当您针对静态库进行链接时,链接器将检查需要哪些对象文件,并将它们链接到可执行文件。结果与在项目中直接编译库的源代码完全相同

因此,实际的问题是:是否有可能在可执行文件中找到非静态函数的地址


某些链接器(如GNU)默认情况下甚至在没有调试信息的项目中生成符号表。在这种情况下,您可以解析符号表。但是,许多链接器不创建此符号表。在这种情况下,所有函数名的信息都会丢失,因此在没有调试信息的情况下,您没有机会获得有关地址的信息。

您所说的某个应用程序是指您的应用程序或您知道的某个其他应用程序已链接到静态库?我知道的某个其他应用程序已链接到该库库如果程序是在调试模式下生成的,并且您可以访问调试信息(.pdb文件等),则可以通过名称查找函数。但是,如果您无权访问调试信息,则不会,所有静态链接的函数名都已从程序中删除。如果没有你提到的.pdb的帮助,我不能得到A()的地址吗?不,仅仅有一个lib不能告诉你链接器把它放在哪里了。除非您可以访问开发人员拥有的文件,否则无法找到静态链接函数的地址。