在Visual C++中,当我构建一个dll时,输出文件是.dll和.lib.
是.lib文件中内置的dll的名称.
我问这个问题的原因是:当我通过导入这个dll并运行exe来构建我的exe时,exe会尝试找到dll以将其加载到进程地址空间中.
由于我们只是在项目属性中指定库名(.lib文件),因此exe如何知道dll的名称.
注意:我在dumpbin libary文件(.lib)中看到它不包含dll的名称.
Rog*_*mbe 19
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
| 归档时间: |
|
| 查看次数: |
6554 次 |
| 最近记录: |