Почему разрабатывание того же проекта генерирует другой EXE-файл для каждого разработчика

Моя команда и я разрабатываем VC ++ 6 проектов. Мы все используем ту же кодовую базу (использующий систему управления версиями), и весь наш компилятор/компоновщик/параметры среды (включая включают порядок каталогов), насколько мы можем сказать, точно то же. Конечно, мы используем тот же VC ++ версия с теми же пакетами обновления (VC6 SP6).

Проблема состоит в том, что EXE, который создает каждый из нас, немного отличается.

Я знаю, что каждый раз Вы создаете EXE на том же компьютере, существует 3 места в файле, где компоновщик хранит метку времени. Я не говорю об этих различиях.

Хотя наши EXE-файлы являются точно той же длиной, когда мы сравниваем EXEs, существуют 1000-е байтов, который отличается. Многие из тех байтов отличаются 0x20 по значению.

Какая-либо идея, какова может быть причина?

Править: Отладочная сборка (На самом деле, Мы не проверяли выпуск).

Править: Различия находятся в двоичных разделах, не в текстовых строках.

Править: Все разработчики используют тот же диск/имена папок для источника и для продуктов.

12
задан Jeffrey Hantin 18 November 2010 в 06:23
поделиться

5 ответов

Если Debug версия имеет опцию «Ссылка постепенно» проверена, то, вероятно, это причина для дифференциров.

5
ответ дан 2 December 2019 в 21:23
поделиться

Просто предположение: неинициализированные части строк или строковых свойств определенной длины, где № 0 не в конце?

-121--2843423-

Так как 0x20 - это разница между символами верхнего и нижнего региона ASCII, мне интересно, если эти различия случаются в файловых путях, которые компилятор / линкер встраиваются в двоичные (Assert Multi?). Могут ли ваши деревья Dev отличаться («C: \ devtrees \ MyProject \ Superfoo» на одной коробке и «E: \ Work \ Projects \ Superfoo» на другой?).

4
ответ дан 2 December 2019 в 21:23
поделиться

Это может быть совпадение, но 0x20 - это разница между значениями строчных и прописных символов ASCII (например, 'A' == 65 == 0x41, 'A' == 97 = 0x61).

1
ответ дан 2 December 2019 в 21:23
поделиться

Я согласен с тем, что говорит Никд. Во время отладки инкрементное связывание находится на том, кто не перестраивает EXE с нуля, но добавляет / вставляет / удаляет код здесь и там для каждой сборки.

I.E. Макет EXE зависит от каждой компиляции с первого.

Чистая сборка должна давать идентичные результаты на одинаковые компиляторы.

3
ответ дан 2 December 2019 в 21:23
поделиться

Просто догадка: неинициализированные части строк или свойства строк определенной длины, где #0 не в конце ?

0
ответ дан 2 December 2019 в 21:23
поделиться
Другие вопросы по тегам:

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