[C++] Линкуется в релизе, но не в дебаге
CategoryStream какое расширение имеет? .h или .cpp?
h, включается в Logger.h, Logger.h включается в my_app
в debug-е он у тебя по идее все inline-ы размещает как не inline, соответственно у тебя получается две функции одна в либе, другая в проге.
У меня есть куча инлайн функций, они все используются в разных библиотеках, потом при сборке приложения все эти библиотеки собираются с приложением, но ведь в них такой ошибки не возникает.
Возможно, косяк в том, это эта функция импортируется в .dll, а если, как ты говоришь, в дебаге все inline функции тоже пихаются в объектник, то получается определение в .dll и в проге. Но вроде MicroSoft заявляет, что такого быть не должно.
Опять-таки, дело вот еще в чем - я использую оператор << для логгера, который и вызывает getPriority, в куче других модулей, которые тоже линкуются с приложением, но такая ошибка вылетает почему-то именно тогда, когда этот оператор используется в Logger.cpp

Оставить комментарий
erotic
Имеем библиотеку log4cpp с файлом CategoryStream, примерно такого содержания:В своей библиотеке я включаю этот файл в файл Logger.h, а в Logger.cpp у меня функция, в которой есть такая строка:
Теперь пытаюсь собрать приложение, используя свою библиотеку и log4cpp. В релизе собирается нормально, в дебаге линкер выдает ошибку:
Мне это кажется очень странным.
Если упомянутою выше строку заменить этой:
то все собирается нормально и в дебаге, и в релизе.
Можете объяснить, где я неправ?