1

我正在从一个项目中编译一个静态库,该项目包含用于接口的 .h 文件和用于实现的 .inl 文件,而 Visual Studio 2008 没有为我生成 .lib,可能的原因是什么?

4

2 回答 2

1

如果您的库是仅包含头文件的库(所有内容都是#included),则无需编译。编译器仅编译源代码(.cpp 文件、.c 等)。如果您的所有代码都是模板,如果您的代码没有任何 .cpp 文件,那么您不会生成任何源代码。用户只包含一些标题。

例如,Boost 的大部分内容都是只有标题的。您只需包含它;你没有链接到任何一个。

换句话说,如果您的所有代码都是内联的,那么它们都不是static。所以没有静态库。

于 2011-11-15T07:29:47.260 回答
0

编译器处理 .inl 文件的方式与处理 .h 文件的方式相同——它不会单独编译它们。您必须将它们包含到 .cpp 文件中才能编译它们。

于 2011-11-15T07:41:08.323 回答