Предположим, у меня есть два проекта: один — что-то вроде «движка приложения», а другой — само приложение. Движок заботится о таких вещах, как управление окнами, и я должен иметь возможность отключить используемую им библиотеку окон, не затрагивая приложение, поэтому приложение не должно включать в себя что-либо, связанное с библиотекой окон.
Я создаю движок приложения в .dll и помещаю его в ту же папку, что и application.exe.
В проекте движка у меня есть класс-оболочка окна, заголовочный файл которого (windowWrapper. з) выглядит
Код: Выделить всё
#include
class WindowWrapper
{
private:
Window* window
// ...
};
и в проекте приложения у меня есть класс приложения, заголовочный файл которого (application.h) выглядит так:
Код: Выделить всё
#include
class Application
{
private:
WindowWrapper window;
// ...
};
Теоретически это работает так, как я хочу, но я получаю сообщение об ошибке (заголовок не найден), поскольку application.h косвенно включает windowLibrary.h, но windowLibrary. h отсутствует в каталогах включения приложения. (Он находится в каталоге включения для DLL.) Если я попытаюсь переместить #include в windowWrapper.cpp, у меня больше не будет указателя окна Window*. в классе WindowWrapper.
Что мне делать?
До сих пор я предпочитал помещать все включения и объявления в файлы заголовков. и все определения в .cpp файлы, почти все без исключения – это неправильно?
Подробнее здесь:
https://stackoverflow.com/questions/791 ... s-projects