Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何在VisualStudio2008中使用inl文件创建静态库?_C++_Visual Studio 2008_Static Libraries_Inline Code - Fatal编程技术网

C++ 如何在VisualStudio2008中使用inl文件创建静态库?

C++ 如何在VisualStudio2008中使用inl文件创建静态库?,c++,visual-studio-2008,static-libraries,inline-code,C++,Visual Studio 2008,Static Libraries,Inline Code,我正在从一个项目编译一个静态库,该项目包含用于接口的.h文件和用于实现的.inl文件,Visual Studio 2008没有为我生成.lib,可能的原因是什么?如果您的库是一个只包含头的库(所有内容都包含在内),那么就没有什么可编译的。编译器只编译源代码(.cpp文件、.c等)。如果所有代码都是模板,如果代码没有任何.cpp文件,则不会生成任何源代码。用户只包含一些标题 例如,大多数Boost都只是标题。你只要把它包括进去;你没有链接到它的任何一个 换句话说,如果所有代码都是内联的,那么就没有

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

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

例如,大多数Boost都只是标题。你只要把它包括进去;你没有链接到它的任何一个


换句话说,如果所有代码都是内联的,那么就没有一个是静态的。因此没有静态库。

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

例如,大多数Boost都只是标题。你只要把它包括进去;你没有链接到它的任何一个


换句话说,如果所有代码都是内联的,那么就没有一个是静态的。因此没有静态库。

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

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

您所说的“inl文件”是什么意思?@Nicol Bolas:这些文件的扩展名为.inl,用于内联定义。您所说的“inl文件”是什么意思?@Nicol Bolas:这些文件的扩展名为.inl,用于内联定义。这些文件可以工作,但会导致以下奇怪的警告:“警告LNK4221:找不到公共符号;存档成员将无法访问”起作用,但会导致这样一个奇怪的警告:“警告LNK4221:找不到公共符号;存档成员将无法访问”+1我觉得好像没有编译过的代码,所以没有.lib文件+1我觉得好像没有编译过的代码,所以没有.lib文件