Ответ 1
Если версия Debug
имеет опцию "Ссылка постепенно", то, вероятно, это причина различий.
Моя команда и я разрабатываем проект VС++ 6. Мы все используем одну и ту же базу кода (используя систему управления версиями), и все наши параметры компилятора/компоновщика/среды (включая включение порядка каталогов), насколько мы можем судить, точно такие же. Конечно, мы используем одну и ту же версию VС++ с теми же пакетами обновлений (VC6 SP6).
Проблема заключается в том, что EXE, который каждый из нас создает, немного отличается.
Я знаю, что каждый раз, когда вы создаете EXE на одном компьютере, в файле есть 3 места, где компоновщик сохраняет отметку времени. Я не говорю об этих различиях.
Хотя наши EXE файлы имеют одинаковую длину, когда мы сравниваем EXE, существует 1000 байтов, которые отличаются. Многие из этих байтов отличаются значением 0x20.
Любая идея, что может быть причиной?
Edit: Debug build (На самом деле мы не проверяли выпуск).
Изменить: различия находятся в двоичных разделах, а не в текстовых строках.
Изменить: все разработчики используют одни и те же имена дисков/папок для источника и для продуктов.
Если версия Debug
имеет опцию "Ссылка постепенно", то, вероятно, это причина различий.
Так как 0x20 - это разница между символами ASCII верхнего и нижнего регистров, мне интересно, находятся ли эти различия в путях файлов, которые компилятор/компоновщик встраивает в двоичный файл (утверждают сообщения, возможно?). Могут ли ваши деревья Dev быть разными ( "C:\DevTrees\MyProject\SuperFoo" на одном поле и "E:\work\projects\superfoo" на другом?).
Я согласен с тем, что говорит NickD. Во время отладки инкрементная привязка находится на том, что не перестраивает exe с нуля, а добавляет/вставляет/удаляет код здесь и там для каждой сборки.
т.е. макет exe зависит от каждой компиляции с первого.
Чистая сборка должна давать одинаковые результаты для идентичных компиляторов.
Это может быть совпадение, но 0x20 - это разница между значениями символов в нижнем и верхнем регистре ASCII (например, "A" == 65 == 0x41, 'a' == 97 = 0x61).
Просто гадать: неинициализированные части строк или строковые свойства определенной длины, где # 0 не находится в конце?