[英]Can an import library contain both stubs and static code at the same time?
当使用mingw-w64
工具链时,我看到链接器正在链接存根库,而不是直接链接。 例如,链接器将选择链接到libkernel32.a
,这是一个导入库。
这激发了我的好奇心,并提出了以下问题:
libws2_32.a
已编译源代码。 我对其进行了反汇编,发现它既包含存根又包含代码-好像它是导入库和静态库的混合。 在MinGW环境之外通常是否可以实现-包含包含有效代码的导入库? 来源: https : //github.com/mirror/mingw-w64/tree/master/mingw-w64-crt/libsrc/ws2tcpip
libws2_32.a
则链接器推断出运行时DLL是ws2_32.dll
。 这是特定于实现的功能还是存在用于存储和定位原始DLL名称的约定? 出于技术原因,导入库不能包含静态链接的入口点。
您可能想检查一下它是否正常工作,但是一种可能使您到达那里的方法是对导入库执行一个后处理步骤,以向其中添加静态链接对象。
此页面包括以下注意事项:
您可以使用LIB执行以下库管理任务:
- 要将对象添加到库中,请为现有库指定文件名,并为新对象指定文件名。
如果此操作不会删除DLL导入信息,则应允许您创建此类库。 我现在正在Mac上工作,因此我无法在家中Windows系统上访问VS来进行确定的测试。
至于链接器如何知道所涉及的DLL的名称,它被嵌入在导入库中,并从那里被嵌入到最终的EXE中。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.