当前位置:  开发笔记 > 编程语言 > 正文

构建DLL文件时,生成的LIB文件是否包含DLL名称?

如何解决《构建DLL文件时,生成的LIB文件是否包含DLL名称?》经验,为你挑选了1个好方法。

在Visual C++中,当我构建一个dll时,输出文件是.dll和.lib.

是.lib文件中内置的dll的名称.

我问这个问题的原因是:当我通过导入这个dll并运行exe来构建我的exe时,exe会尝试找到dll以将其加载到进程地址空间中.

由于我们只是在项目属性中指定库名(.lib文件),因此exe如何知道dll的名称.

注意:我在dumpbin libary文件(.lib)中看到它不包含dll的名称.



1> Roger Lipsco..:

LIB文件在EXE中变为导入表.这确实包含DLL的名称.

如果你跑,你可以看到这个dumpbin /all MyDLL.lib.请注意,dumpbin MyDll.lib它本身并没有显示任何有用的东西:你应该使用/all.

这显示了.LIB文件中定义的所有部分.您可以忽略任何.debug部分,因为它们不会出现在发布版本中.在.LIB文件中,有一组.idata节.在我刚刚构建的DLL项目中,LIB文件包含一个.idata$4部分,用于定义要放在EXE导入表中的符号,包括DLL名称:

Archive member name at 83E: MyDll.dll/      
497C3B9F time/date Sun Jan 25 10:14:55 2009
         uid
         gid
       0 mode
      2E size
correct header end

  Version      : 0
  Machine      : 14C (x86)
  TimeDateStamp: 497C3B9F Sun Jan 25 10:14:55 2009
  SizeOfData   : 0000001A
  DLL name     : MyDll.dll
  Symbol name  : ?fnMyDll@@YAHXZ (int __cdecl fnMyDll(void))
  Type         : code
  Name type    : name
  Hint         : 2
  Name         : ?fnMyDll@@YAHXZ

推荐阅读
jerry613
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有