首先,我在 linux 上使用 c++11 和 g++4.7 来解决我的所有问题。
我的问题的设置:我创建了一个在不同程序中使用的共享库(我们称之为“libA”)。在这个库中有一部分没有在界面中公开,因为它与程序无关。但是,现在我想直接在另一个库(“libB”)中使用这个以前隐藏的部分。
因此,我的计划是从 libA 的隐藏部分创建一个新库。这将是“libSub”。然后将 libsub 包含在 libA 和 libB 中。两者都编译没有错误。但是当我现在尝试编译一个依赖于 libA 的程序时,我收到很多错误,说有来自 libSub 的函数的未定义引用。
为了使结构更清晰:
// Sub.hpp
class Sub{
private:
// private variables
public:
// interface functions
};
// A.hpp
class Sub; //forward declaring the sub-class
class A{
private:
std::shared_ptr<Sub> s;
// more private variables
public:
// some interface functions
};
// A.cpp
#include <Sub.hpp> // include the declaration of the Sub class
// definitions of the member functions of A
// program.cpp
#include A.hpp
a=A();
这些库被放置在本地文件夹中,因为我想避免将它们安装到一般的 lib 文件夹中。我想将它们全部安装到全局 lib 文件夹可以解决问题。
问题是:有没有办法摆脱错误并仍然使用本地文件夹?如果是这样,怎么办?