一直以为这两者之间没有什么区别,直到前段时间自己写了2个库,才发现还是有不同之处的。下面用实例来说明:
[准备]
有2个静态连接库:AddLib、Calc,一个测试工程Test(VS2013)
其中AddLib提供了函数接口:int add(int x, int y);
Calc提供函数接口:int calc(int x, int y); // calc中调用add
测试程序Test:printf("calc:%d\n", calc(10, 15));
[测试]
1.Calc中使用附加依赖项中加入AddLib.lib
Test链接时只需要有Calc.lib就可以了
2.Calc中使用#pragma comment(lib,"AddLib.lib")
Test链接时不仅需要Calc.lib、还需要AddLib.lib,而且可以发现这是Calc.lib文件大小要比1中小。
[结论]
也就是说在附加依赖项中添加AddLib.lib,在生成Calc.Lib时就已经把add链接进Calc中了,而#pragma comment却没有。
具体原理不清楚。