今天编译静态链接库时,VC提示了 LNK4221 警告。虽然没什么影响(起码暂时没遇到),也特别去查了下警告的由来。
该警告的中文提示是:
xxx.obj : warning LNK4221: 此对象文件未定义任何之前未定义的公共符号,因此任何耗用此库的链接操作都不会使用此文件。 |
不得不说这个翻译真是非常的晦涩,令人费解。可能,面对如此繁多的提示,微软的翻译人员也偷懒了吧。我们还是来看看英文版的:
warning LNK4221: This object file does not define any previously undefined public symbols, so it will not be used by any link operation that consumes this library. |
嘛,很好懂:该对象文件未定义任何公共符号,所以其它库也不会使用这个对象文件。
原因显而易见了,任何一个cpp文件,如果里面只写了声明,而没有定义部分,那么,其实这个cpp文件就是空的,也就没有任何公共符号(此处公共符号是连接器 Linker 中使用的符号)了。