Общая библиотека qt, включая внешние заголовки - PullRequest
0 голосов
/ 12 марта 2012

Я пытаюсь отделить часть своего кода и поместить его в общую библиотеку, которую я смогу использовать из других мест. В документации:

http://doc.qt.io/archives/qt-4.7/sharedlibrary.html

Говорят, что вы не можете ссылаться на другие заголовочные файлы. Как я могу включить общие заголовки в мою общую библиотеку?

1 Ответ

5 голосов
/ 12 марта 2012

Общие библиотеки в контексте, обсуждаемом в указанной вами ссылке, - это файлы .so (общие объекты) (.dll, библиотека динамических ссылок в Windows) или статические (.lib) библиотеки. Qt предоставляет такую ​​библиотеку; как и многие другие поставщики / проекты. Чтобы использовать их в другом приложении (например, в вашем), вы включаете заголовки и ссылку против библиотеки.

То, о чем статья предупреждает, - это #include заголовочные файлы, которые могут отсутствовать у пользователя, то есть те, которые не являются частью вашего проекта. Помните, что для того, чтобы кто-то другой использовал вашу новую «разделяемую библиотеку», он должен включить предоставленные вами файлы заголовков. Если этот файл содержит другие заголовки, которых у них нет, они получат ошибки.

Чтобы избежать этой проблемы, сделайте ваши #include s в ваших файлах реализации (.cpp); таким образом, они скрыты от будущих пользователей. Qt рекомендует идиому «указатель на реализацию» (pimpl) - все детали реализации скрыты от пользователей класса, включая любые и все заголовочные файлы, от которых зависит реализация.

Вы можете легко сделать то же самое, даже если вы не изо всех сил с pimpl. Цель состоит в том, чтобы #include содержать в заголовке только абсолютно необходимые файлы, надеюсь, все, что вы предоставили своей библиотекой.

...