Немного теоретического вопроса (вместо конкретного примера) Я думал, что понял это, но теперь у меня снова возникают сомнения ...
Сценарий:
У нас есть общий класс с именем bob
и его реализация только для заголовка.
У нас есть библиотека (lib1
), которая использует bob (такой, что bob определен вскомпилированная библиотека).
У нас также есть приложение (exe1
), которое использует bob (такое, что bob определено в скомпилированном исполняемом файле).
Теперь есть (afaik) определение bob
в lib1
и exe1
.Что произойдет, если я попытаюсь связать lib1
в exe1
... это возможно?
Есть ли какая-то разница, если я сделаю класс bob
в пару файлов .cpp и .hpp искомпилировать файл cpp как в библиотеке, так и в exectuable - или это в основном одно и то же?
Мой вопрос действительно относится к тому, какие определения находятся в двух двоичных файлах и что действительно делает компоновщик со всем этим?(код тривиален).Насколько я понимаю, это всегда должно вызывать переопределение ошибки bob
, но я, кажется, не вижу этого.
Это может означать, что я что-то делаю неправильно - поэтому яРебята, хотели бы подтвердить, правильно ли то, что я считаю?