我有一个动态库A.dll,它使用一个包含函数“int foo()”的静态库B.lib。当我使用dumpbin(在win32,vs2010上)来查看dll中的符号时 - foo是不可见的 - 这是预期的吗?或者是微软特有的吗?我在linux上测试了这个,而在linux上则不是这样。
非常感谢您耐心阅读本文。
卡皮尔西。
答案 0 :(得分:0)
是的,这是预料之中的。就导入的符号而言,使用dumpbin,您可以看到所谓的导入地址表和导入名称表,一旦应用程序导入至少一个函数(通常),它们就存在(在您的情况下为A. DLL)。由于您的应用程序从STATIC库(在您的情况下为B.lib)中导入一个函数,因此上面提到的导入表中存在 NO 条目,用于从B.lib中使用的函数。一旦库静态链接到应用程序,其主体(代码)就是应用程序的一部分。除了使用dumpbin看不到应用程序的功能之外,dumpbin也看不到静态库的功能!