2010-07-29 2 views
4

Это выход я получаю от dumpbin AchievementsTable.obj /HEADERSПочему DumpBin говорит мне, что нет COMDAT в моих двоичных файлах?

Microsoft (R) COFF/PE Dumper Version 8.00.50727.762 
Copyright (C) Microsoft Corporation. All rights reserved. 


Dump of file AchievementsTable.obj 

File Type: ANONYMOUS OBJECT 

ANON OBJECT HEADER VALUES 
       1 version 
      14C machine (x86) 
     4C51334D time date stamp Thu Jul 29 08:52:45 2010 
       ClassID: {0CB3FE38-D9A5-4DAB-AC9B-D6B6222653C2} 
      945F size 
       0 flags 

ALL мой источник делает это. Я использую VisualStudio 2005. Я знаю, что есть много COMDATs, экспортируемых, так как .exe впоследствии ссылается и выполняет правильно: есть ли переключатели компилятора, которых я должен избегать? Вот те, которые я использую:

/O1 
/Ob2 
/Oi 
/GT 
/GL 
/I "..\dxsdk\include" <lots of include paths> 
/D "WIN32" <lots of #defines> 
/GF 
/FD 
/MT 
/GS- 
/Gy 
/arch:SSE2 
/fp:fast 
/GR- 
/Fo <directory specified> 
/Fd <pdb filename specified> 
/FR <directory specified> 
/W4 
/c 
/Zi 
/TP .\Source\databases\AchievementsTable.cpp 

Я открыт для комментариев на мой выбор в целом, но использование Dumpbin находится в центре внимания этот вопрос: принять его прочь, мальчики и девочки ...

+0

Несомненно, если вы хотите видеть символы, вам нужно запустить 'dumpbin AchievementsTable.obj/SYMBOLS'? –

+0

Нет, я использую/GL, поэтому доступен только параметр/HEADERS. Я использую SymbolSort (см. Http://gameangst.com/?p=46 для получения дополнительной информации), который требует вывода из dumpbin /HEADERS – hatcat

+0

Извините, я здесь не был ясен, я имею в виду COMDATs а не символов. Я исправлю вопрос. – hatcat

ответ

7

После дня устранения я обнаружил, что документация DUMPBIN немного неоднозначна.

Для получения выходного сигнала COMDAT необходимо включить связь уровня функции (/ Gy). Включение оптимизации кросс-модуля (/ GL) задерживает генерацию кода для привязки времени. Поэтому, хотя верно, что информация заголовка доступна для кода, скомпилированного с помощью/GL, он очень ограничен. Вот почему это единственный вариант, доступный для DUMPBIN - для всех остальных вариантов требуется дополнительная информация, генерация которой задерживается на/GL.

+0

* «Я обнаружил, что документация DUMPBIN немного неоднозначна ...» * - если это какое-то утешение, я думаю, что Microsoft в конечном итоге изменила его. В документации для [dumpbin /SYMBOLS] (https://msdn.microsoft.com/en-us/library/b842y285.aspx) теперь говорится: * «Только опция/HEADERS DUMPBIN доступна для использования в файлах, созданных с помощью/GL компилятор ». * Похоже, что изменение произошло примерно в VS2005. – jww