【发布时间】:2012-03-08 16:33:19
【问题描述】:
我有一个动态库 A.dll,它使用一个包含函数“int foo()”的静态库 B.lib。当我使用 dumpbin(在 win32、vs2010 上)查看 dll 中的符号时 - foo 不可见 - 这是预期的吗?还是微软特定的?我在 linux 上测试过这个,在 linux 上不是这样。
非常感谢您耐心阅读本文。
卡皮尔。
【问题讨论】:
标签: dynamic dll static invisible dumpbin
我有一个动态库 A.dll,它使用一个包含函数“int foo()”的静态库 B.lib。当我使用 dumpbin(在 win32、vs2010 上)查看 dll 中的符号时 - foo 不可见 - 这是预期的吗?还是微软特定的?我在 linux 上测试过这个,在 linux 上不是这样。
非常感谢您耐心阅读本文。
卡皮尔。
【问题讨论】:
标签: dynamic dll static invisible dumpbin
是的,这是意料之中的。就导入的符号而言,使用 dumpbin,您可以看到所谓的导入地址表和导入名称表,只要应用程序导入至少一个函数(在您的情况下为 A. dll)。由于您的应用程序从 STATIC 库(在您的情况下为 B.lib)导入一个函数,因此在上述导入表中存在 NO 条目,用于从 B.lib 使用的函数。一旦库静态链接到应用程序,它的主体(代码)就是应用程序的一部分。除了使用dumpbin 看不到应用程序的功能外,dumpbin 也看不到静态库的功能!
【讨论】: