zoukankan      html  css  js  c++  java
  • 动态库与静态库相互调用

    解决了困惑我已久的问题:动态库和静态库相互调用的问题。

    转载自:  http://blog.csdn.net/lien0906/article/details/54950152

    静态库与动态库相互调用

    测试场景,Test,lib1,lib2,dll1,dll2,分为下面四种情况:
    1、Test->lib1->lib2
    lib1编译自己的代码,对lib2的部分,只需要lib2的头文件,对lib2的代码实现,使用占位符关联。
    生成Test连接的时候,把lib1的代码实现包含进来,再递归,把lib1中关联lib2的代码实现也包含进来。
    运行Test的时候,不再需要lib1和lib2。

    2、Test->lib1->dll2
    lib1编译自己的代码,对dll2的部分,只需要dll2的头文件,对dll2的代码实现,使用占位符关联。
    生成Test连接的时候,把lib1的代码实现包含进来,但是,dll2中的代码不包含进来。
    运行Test的时候,不需要lib1,但是需要dll2【不需要dll的lib文件】

    3、Test->dll1->lib2
    dll1编译自己的代码,对lib2的部分,需要lib2的头文件和实现,即lib2,把lib2的代码实现包含到dll1中
    生成Test连接的时候,dll1中的代码不包含进来,并且不再需要lib2。

    【可以这样测试,生成lib2,生成dll1,生成test.exe,删除lib2,删除test.exe,再生成test.exe,可以生成成功。说明生成test.exe,连接的时候根本不需要lib2,。也就是说,静态库会被连接到动态库或者exe中,但是不会被连接到其他的静态库中】
    运行Test的时候,需要dll1,但是不需要lib2

    4、Test->dll1->dll2
    dll1编译自己的代码,对dll2的部分,需要dll2的头文件和lib文件,对dll2的代码实现,使用占位符关联。
    生成Test连接的时候,Test需要dll1的lib,dll1需要dll2的lib,但是代码实现都不会包含在Test中。
    运行Test的时候,需要dll1和dll2【不需要他们的lib】

  • 相关阅读:
    android常用的Application类
    Android一些问题的解决方案
    MakeFile相关
    Android源码与设计模式之notifyDataSetChanged()方法与观察者模式
    Activity启动模式与onNewIntent()简述
    (转)eval与迭代
    ADB命令
    其他常用工具类
    文件操作常用工具方法
    [TJOI2007] 可爱的质数
  • 原文地址:https://www.cnblogs.com/findumars/p/8206925.html
Copyright © 2011-2022 走看看