我正在尝试将我的一些代码分开并将其放在一个共享库中,我可以在其他地方使用它。在文档中:
http://doc.qt.io/archives/qt-4.7/sharedlibrary.html
他们说你无法链接到其他头文件。我如何能够将共享标头包含到我的共享库中?
答案 0 :(得分:5)
您提供的链接中讨论的上下文中的共享库是.so(共享对象)文件(.dll,动态链接库,在Windows上)或静态(.lib)库。 Qt提供这种库;许多其他供应商/项目也是如此。要在其他应用程序(例如您的应用程序)中使用它们,您包含标题和链接对库。
文章警告的是#include
用户可能没有的头文件 - 即那些不属于您项目的头文件。请记住,对于其他人使用新的“共享库”,他们需要包含您提供的头文件。如果该文件包含他们没有的其他标头,则会出现错误。
要避免此问题,请在执行(.cpp)文件中执行#include
;这样,它们对未来的用户是隐藏的。 Qt建议"pointer-to-implementation" (pimpl)成语 - 所有实现细节都隐藏在类的用户中,包括实现所依赖的任何和所有头文件。
即使你没有全力以赴地使用pimpl,你也可以轻松地做同样的事情。目标是在标题中#include
仅包含绝对必需的文件,希望您提供的所有文件都是您的文件。