Mik*_*kes 14 c++ linker gcc visual-c++
我有一个C++可执行文件,我正在动态链接几个库(Boost,Xerces-c和自定义库).
我明白为什么如果我选择静态链接这些库,我会要求.lib/.a文件(这里有相关的问题).但是,如果我动态链接这些外部库,为什么在链接我的可执行文件时需要提供相应的.lib/.so库文件?
编译器不知道动态链接,它只知道通过其原型存在一个函数.链接器需要lib文件来解析符号.DLL的lib包含其他信息,例如函数所处的DLL以及它们的导出方式(按名称,按序列等).DLL的lib文件包含的信息比包含完整目标代码的lib文件少得多 - libcmmt我的系统上的.lib是19.2 MB,但msvcrt.lib是"仅"2.6 MB.
请注意,此编译/链接模型此时已接近40年,并且在大多数平台上都处于动态链接之前.如果它是今天设计的,动态链接将是一等公民(例如,在.NET中,每个程序集都有丰富的元数据,准确描述它导出的内容,因此您不需要单独的头文件和库.)
| 归档时间: |
|
| 查看次数: |
2196 次 |
| 最近记录: |