【发布时间】:2011-08-27 06:01:39
【问题描述】:
我有两个项目,它们有一些共同的标题,所以它们都包含这些标题。现在我的问题是:我可以在外部 cpp 文件中实现这些头文件吗?例如,当标头在项目中时,您只需声明函数并在 .cpp 文件中实现它们,并且由于 .cpp 文件在项目中,编译器将知道从哪里获取这些函数的实现。
那么我该如何为外部标题做同样的事情呢?包括 .h 和 .cpp??实现 .h?? 中的所有功能?
谢谢。
【问题讨论】:
我有两个项目,它们有一些共同的标题,所以它们都包含这些标题。现在我的问题是:我可以在外部 cpp 文件中实现这些头文件吗?例如,当标头在项目中时,您只需声明函数并在 .cpp 文件中实现它们,并且由于 .cpp 文件在项目中,编译器将知道从哪里获取这些函数的实现。
那么我该如何为外部标题做同样的事情呢?包括 .h 和 .cpp??实现 .h?? 中的所有功能?
谢谢。
【问题讨论】:
通常,您将为 cpp 文件中的定义创建一个动态或静态库 - 这些是您共享的标头中声明的导出定义。
然后您将您的应用程序/可执行文件链接到该库。
在链接期间,链接器将在您创建的静态/动态库中定位应用程序引用的符号。如果您正确实施和配置了所有内容,则不会出现链接器错误。
【讨论】:
这取决于您要完成的工作。我有效的解决方案是创建一个“仅标题”文件,其中实现在声明中。大部分的 boost 库都是这样做的。
另一种选择是将您的通用代码放在另一个项目中,并链接到它。
【讨论】: