170 похожих чатов

Кто-То сталкивался с тем, что на винде std::string несовместима между

дебажной и релизной сборкой?Например, релизный exe загружает дебажнуюю длл, получает из нее std::string, а она битая.

Я полистал исходники - не вижу ifdef, который мог бы такое делать, но там многие тысячи строк кода и шаблон на шаблоне.

18 ответов

9 просмотров

Известный факт, что дебажные и релизные std классы в MSVC бинарно несовместимы в большинстве своём

Alex- Автор вопроса
Alexander Karaev
Известный факт, что дебажные и релизные std классы...

Это очень коварно, а нет дефайна, который этим управляет?

Просто принять и не делать так

Вообще-то совместима, но тут проблема в том что если у тебя в одном приложении используется одновременно и отладочная версия стандартной библиотеки и релизная, то это нарушение One definition rule и программа автоматом некорректна

Alex- Автор вопроса
Ilya Zviagin
Вообще-то совместима, но тут проблема в том что ес...

Не уверен, что это так работает, определения в разных exe / dll независимы. А строка вообще шаблонная.

Alex
Это очень коварно, а нет дефайна, который этим упр...

Очень коварно нарушать одт и мешать две стандартные библиотеки...

Alex
Не уверен, что это так работает, определения в раз...

А я уверен что это работает именно так и тебя могу заверить что это работает именно так

Alex
Не уверен, что это так работает, определения в раз...

Шаблонная строка или нет Это неважно, она по стандарту языка должна быть во всей программе определена единственным образом а если это не так то это неопределённое поведение. Определение в разных exe и dll могут быть независимыми но в рамках одного приложения Они обязаны быть одинаковыми. Иначе будет неопределённое поведение на которое ты и наталкиваешься и оно тебе дают по зубам Ну и поделом!

Alex- Автор вопроса
Ilya Zviagin
Шаблонная строка или нет Это неважно, она по станд...

Да, только причина не в нарушении ODR, а в разном ABI

Alex- Автор вопроса
Ilya Zviagin
Шаблонная строка или нет Это неважно, она по станд...

Единственным образом, но не один раз. ODR ни при чем.

Alex
Единственным образом, но не один раз. ODR ни при ч...

Дорогой это оно и есть, ODR, не единственным образом, а тупо одинаково

Alex
Единственным образом, но не один раз. ODR ни при ч...

Так-то, просто хочу напомнить, ты любой объект или тип программы на c++ или C и так в каждой единице трансляции определяешь заново, то есть ни в одной программе на си или си плюс плюс правила определения чего-то ровно один раз и не больше не может быть потому что у нас есть многофайловая сборка, раздельная трансляция

Alex- Автор вопроса
Ilya Zviagin
Так-то, просто хочу напомнить, ты любой объект или...

много раз можно только с internal linkage, а иначе - только один раз на весь бинарник, а не один раз на TU.

Alex
Единственным образом, но не один раз. ODR ни при ч...

Давай лучше перейдём к практическую плоскость и решим твою проблему а решение должно быть в том что ты должен собирать всю свою программу либо в режиме сборки релиз либо в режиме сборки дебаг либо ещё как-то но всегда одинаково всю программу целиком со всеми библиотеками со всеми модулями бинарными

Ты не прав, ты путаешь помещение объектов в словарь глобальных ссылок с определением объектов и типов программы. Это разные вещи. И даже более, то о чём ты говоришь оно диагностируемо по большей части То есть ты получишь в случае нарушения ошибку не всегда но там скажем 80% случаев А вот нарушение одр наоборот почти никогда не диагностируемо

Там итераторы на дебаге другие

Похожие вопросы

Обсуждают сегодня

я не магистр хаскеля, но разве не может лейзи тип конвертнуться в не-лейзи запросив вычисление содержимого прям при инициализации?
deadgnom32 λ madao
49
читать файл максимально быстро? странный вопрос))
zamtmn
53
Всем доброго вечера! Хочу поделиться своим злоключением с человеком, который, как оказалось сюда тоже скидывал свое резюме. Жаль, что я вашу группу не нашел раньше… человек ки...
Роман Ахмедзянов
4
How to create an OS in C? what to study?
Linus
18
Компания Elif ищет менеджера проектов, который будет заниматься поиском и ведением новых проектов. Прежде чем приступить к работе, вам нужно пройти наш недельный курс, где вы ...
Elif
5
тоесть, указав return eax, сгенерируется никому ненужная инструкция mov eax,eax ?
Aiwan \ (•◡•) / _bot
24
Привет, кто может сделать юзербота с апи? Задачи: - создавать группы - создавать каналы - задавать для созданных каналов аватарку или эмоджи, имя группы - добавлять в группы...
Lencore
11
@HemulGM Параметры у AddStream поменялись? Несостыковка какая-то
Катерина Свиридова
12
а зачем этот вопрос для удаления из чата?
Mёdkinson Medvezhkin
63
Народ, с прошедшими и наступающими. Ща полную ересь прогоню, но фишка в том, что это не обычная алкогольная ересь Либера, а я реально хз что делать. Сайт с 2012-го года Косяк...
Alexey Liber
1
Карта сайта