整个静态库是使用它添加到可执行文件中,还是只是使用过的部分?

时间:2012-09-03 05:59:38

标签: visual-studio-2010 static-libraries

我不确定如何搜索这个问题,这就是我问它的原因。

当你有一个包含3个课程的项目时。


Class A
{
   int doSomething();
}

// Depends on A.
Class B
{
 A objA; 
}

// Depends on nothing
Class C
{
   void Terminate();
}

然后创建一个包含这3个类的静态库。当您将.lib文件与可执行文件链接时,将1)2)

  1. 所有该库中的类加入可执行文件(A,B,C)
  2. 或者只是使用类(以及它的依赖项)? (A,B,而不是C)
  3. 
    void main()
    {
     B b;
     b.doSomething();
    }
    

1 个答案:

答案 0 :(得分:0)

静态链接将记录哪个库以及所需的类/函数位于哪个文件位置。除了映射的位置偏移之外的代码不在main()中。
通常,这看起来像:

main(){
  compiled_library.dll 0x01234ABC <- offset in file
}