2013-08-29 2 views
0

У меня есть решение с 2 проектов в нем:Не можете найти включаемый файл

  • ControlGUI
  • FunctionLIB

В FunctionLIB я использую два API-интерфейсы для внешних устройств, называемых SDK1.h и SDK2.h

либерал связан с графическим интерфейсом, но графический интерфейс пользователя включает в себя только FunctionLIB.h

При создании библиотеки lib, заголовки найдены, поскольку каталоги include установлены правильно. Но при компиляции GUI, который использует функции LIB, я получаю файлы с включенными файлами. Я также должен добавить каталоги include в GUI-каталоги.

Почему это так? LIB находит это очень хорошо, но GUI косвенно вызывает ошибку, и я не понимаю, зачем это нужно, в первую очередь.

ответ

2

Если вы создадите библиотеку, у вас должен быть один (или более) общедоступный заголовочный файл, который входит в код, который нуждается в вашей библиотеке. Однако эти общедоступные файлы заголовков должны стараться не включать какие-либо внешние библиотеки, используемые внутри вашей библиотеки.

В вашем случае может быть достаточно создать два файла заголовка для вашей библиотеки. Один публичный и один закрытый, который включает общий заголовочный файл и внешние файлы заголовков. Затем в вашей библиотеке вы включаете только закрытый файл заголовка.

+0

Мой включенный файл из библиотеки lib включает в себя три файла заголовка, и те включают другие заголовки. Таким образом, включенный файл напрямую не включает внешние заголовки. – SinisterMJ

+0

@AntonRoth Даже если внешний заголовочный файл не включен * напрямую *, они все еще включены. разделение заголовка библиотеки на публичный и закрытый файл заголовка в любом случае хорош. –

Смежные вопросы