2017-02-01 17 views
0

У меня есть библиотека A.dll, которая использовала библиотеку ведения журнала Google (glog). Теперь я хочу использовать эту библиотеку в другом проекте, в моем собственном проекте я не хочу использовать glog. Я хочу просто использовать A.dll, но во время компиляции компилятор говорит, что не может найти заголовок logging.h !!!Зачем использовать эту библиотеку для своих внутренних заголовков?

Почему это происходит ?! это заголовок, который A.dll использует внутренне, и я хочу использовать интерфейс A, а не glog. Я думаю, что достаточно включить A.h, мне не нужно logging.h. Я ошибаюсь? любая идея, в чем проблема?

A.dll построен с MSVC++ 2015, и я использую MSVC++ 2015 в QT Creator.

+1

Если A.dll зависит от другой библиотеки, вы просто не можете отнять эту зависимость, не переустанавливая A.dll для работы без этой зависимости. –

+0

У меня есть библиотека glog и настроил мой проект на поиск glog dll. У меня есть logging.h и все другие заголовочные заголовки. Но мой вопрос в том, почему компилятор нуждается в заголовках glog в моем проекте? – payman

+0

Возможно, для этого нужен один из файлов заголовков A.dll? –

ответ

1

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

Одна из причин заключается в том, что разработчики библиотеки A выполнили плохую работу и не смогли скрыть внутренние зависимости.

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