这个问题困扰了我很长一段时间,在网上查过说是不能调用,误人子弟啊,幸亏在项目上遇到了这个东西。在看项目代码的时候一直困惑于为什么其中的一个静态库工程没有设置 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.添加头文件。
静态库调用静态库和上面一样的,可以自己试试,这里不再说了。
本身可能对静态库理解的不够透彻,希望高手指正。