静态库能否调用动态库或者静态库

这个问题困扰了我很长一段时间,在网上查过说是不能调用,误人子弟啊,幸亏在项目上遇到了这个东西。在看项目代码的时候一直困惑于为什么其中的一个静态库工程没有设置 Additional Dependencies,也没有设置LIB的路径。仅仅只是include了库的头文件。后来自己建了工程尝试了一下才发现如下情况:


1. 静态库无论调用动态库还是静态库都只需要include库的头文件就OK了

2. 要在调用该静态库的地方添加库引用,并设置路径。

结论:其实静态库调用动态库或者静态库,只是在用到库方法的地方把该方法添加到LIB当中,真正使用的地方才会把这些库LINK起来生成可执行文件。


例如:

假设我们有一个动态库 DemoDll.dll,其中有一个方法 int add(int a, int b){ return a + b}。

我们现在要创建一个静态库DemoLib.lib,也有一个方法 int getResult(int a, int b){ return add(a, b)}。其中的add是调用动态库的方法。这里我们只需要include该方法所在的头文件就可以了。

现在创建一个DemoTest 测试该静态库。

1. 添加 DemoLib.lib 和 DemoDll.lib(DemoDll.dll的引导库)到dependencies里面,并设置库所在路径。

2.添加头文件。


静态库调用静态库和上面一样的,可以自己试试,这里不再说了。

本身可能对静态库理解的不够透彻,希望高手指正。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值