Первое, что нужно сделать, когда компоновщик жалуется, что что-то не определено, - это найти для себя, где эта вещь определена .Если вы не можете найти его, то не ожидайте, что компоновщик его тоже найдет.
То, что вы показали, это объявление, а не определение.Определение не будет содержать ключевое слово extern
.В вашем проекте должно быть определение ровно в одном .cpp файле, а не в заголовке.
Как только вы нашли определение, вы можете начать работать над тем, почему компоновщик не 'не вижу этого.Может быть, он определяется только при наличии определенных символов, таких как DEBUG
или NDEBUG
.
Если определения нет, то, возможно, все , использующие , будут удалены во время компиляции релиза (возможно, потому что все применения происходят в assert
операторах, которые компилятор пропускает), поэтому отсутствующее определение не замечено в режиме выпуска.