【发布时间】:2012-01-23 19:03:18
【问题描述】:
我有一个带有基类 (MyClassA) 的库 (a.so)。另一个库(b.so)有一个类 MyClassB,它继承自 MyClassA(在 a.so 中)。我编译了在 a.so 中隔离的 MyClassA.h 和 MyClassA.cpp。 MyClassB.h 和 MyClassB.cpp 是单独编译的(引用 MyClassA.h 但未将 MyClassA.h 添加到 b.so)。然后我将 b.so 链接到 a.so。
总结一下:
- a.so 包含 MyClassA.h 和 MyClassA.cpp
- b.so 包含 MyClassB.h 和 MyClassB.cpp
- b.so 链接到 a.so
当我尝试编译时,我收到了许多由 b.so 引起的 MyClassA 引用错误。
当我编译 b.so 并将 MyClass.h 添加到它时,库编译并运行没有任何错误。因此:
- a.so 包含 MyClassA.h 和 MyClassA.cpp
- b.so 包含 MyClassB.h、MyClassB.cpp 和 MyClassA.h
- b.so 链接到 a.so
是否可以在 C++ 中使用我的第一个选项,或者是否需要始终在子类库中包含基本头文件?
【问题讨论】:
-
作为第一个选项应该可以工作,我们需要查看更多错误和代码,尤其是标题及其包含的内容
标签: c++ inheritance linker shared