包含在自制静态库头文件中使用的库
Posted
技术标签:
【中文标题】包含在自制静态库头文件中使用的库【英文标题】:include libraries that are used in header file of self-made static library 【发布时间】:2019-05-19 10:30:32 【问题描述】:在一个静态库项目中,我有一个类似于下面的“myClass.h”:
class myClass
.
.
#include "tensorflow/....h" //some tensorflow header file
.
.
using tensorflow::Tensor;
.
.
void CopyTensorImage2Cv(tensorflow::Tensor &Tensor);
.
.
我有定义为CopyTensorImage2Cv()
的“myClass.cpp”。
我想做一个静态库,所以我构建项目并成功获取“myClass.lib”。
现在,我用源代码“test.cpp”制作了一个控制台应用程序来使用这个 lib 文件。
当我添加 lib 文件并在“test.cpp”旁边复制“myClass.h”并构建项目时,Visual Studio 出现无法理解 #include "tensorflow/....h"
和 "using tensorflow::Tensor"
的错误
在这种情况下我该怎么办,我想使用一个静态库,它在其头文件中使用另一个库?
【问题讨论】:
.h 文件是否包含整个库?也许它取决于其他元素?包含路径是否正确? 是的,当我使用此代码时,所有代码都可以正常工作。我的问题是是否将此代码用作静态库。 包括模板? 建立一个只包含必要的头文件和myClass.cpp的项目,编译它,你会得到一个与'main()'相关的错误,但忽略它,你会得到myClass.o file(object文件)比在添加所有必要的文件(头文件 + myClass.h + main() 文件)后的下一个项目中,链接 myClass.o 文件并运行项目。这次 myClass.o 将充当静态库。 @Michael Chourdakis 是的 【参考方案1】:我找到了解决方案, 我使用前向声明来避免在我的头文件中使用#include。 这个对我有用。 有关更多详细信息,您可以在头文件中搜索前向声明。 例如在这种情况下,我使用以下代码:
namespace tensorflow
class Tensor;
;
【讨论】:
以上是关于包含在自制静态库头文件中使用的库的主要内容,如果未能解决你的问题,请参考以下文章