Для начала я понимаю, что здесь есть несколько вопросов с ошибкой определения, но я все это смущаю.Ошибка компоновщика C++ с несколькими уровнями оптимизации с уровня оптимизации
У меня есть модуль, который я разрабатываю, и я строил в отладке, то есть -DDEBUG -g -O0
. Теперь, когда я хочу сделать релиз -DNDEBUG -Os
я строю, и я получаю ошибки компоновщика для нескольких определений нескольких определений STL включая
- StD :: basic_ios> :: basic_ios()
- станд :: __ throw_bad_alloc()
- станд :: строка :: правопреемник (символ сопз *) v
- так далее
Я проверил мой проект, все файлы заголовки имеют #ifndef охраны и только код в заголовочных файлах объявлен инлайн.
В беспорядке я нахожу, что могу скомпилировать с -DNDEBUG -O0
, но не с любым уровнем оптимизации. Процесс сборки включает в себя создание около 2 дюжин объектов, а затем их объединение. Почему оптимизация убивает компоновщика? и как я могу это исправить?
Здание с TDM MinGW 4.6.1.
Как я уже сказал в вопросе, я не могу найти файлы проблем. Любая помощь, чтобы выяснить, какие файлы являются проблемами детей? –
@AndrewRedd вы включаете в себя любые заголовки MFC? Вы можете, конечно, попытаться удалить файлы, пока не найдете источник. –
Я не думаю, что проблема смешанных dll имеет к этому какое-то отношение. Я полностью строю от чистого, а не смешивания отладки и выпуска. –