Vc80.pdb - Как мне заставить его уйти и больше не беспокоить меня?

При создании статических библиотек с VS2005 я продолжаю получать предупреждения компоновщика, которые не могут найти VC80.pdb с моей библиотекой .lib. По-видимому, в результате функция редактирования и продолжения IDE не работает с любым проектом, который включает библиотеку .lib

Какую магию нужно сообщить VS2005 для создания статического lib с редактированием и продолжить отладочную информацию, которая НЕ ссылается или не требует vs80.pdb при подключении к проекту?

- При дальнейшем понимании - Итак, чтобы заставить редактировать и продолжать работать с предварительно скомпилированным статическим lib, нам нужно поместить файлы vs80.pdb и vs80.pdb в SVN вместе с .lib и переименовать pdb/idb, чтобы предотвратить конфликты при выполнении этого с несколькими предварительно скомпилированными библиотеками.

Ответы

Ответ 1

vc80.pdb - это файл, содержащий информацию об отладке для вашей библиотеки. В идее Страницы свойств: свойства конфигурации: c\С++: выходные файлы позволяют переименовать это в нечто более подходящее, например имя вашей библиотеки. Когда компоновщик связывает ваш lib с целевым exe, он ищет этот pdb (есть указатель на него в lib) и извлекает информацию из этого pdb и удаляет его в exe pdb.

/Fd [name] - это опция для переименования pdb /ZI - это опция для компиляции с помощью pdb, которая включает в себя информацию "Изменить" и "Продолжить".

Для всех связанных библиотек и окончательного набора тегов exe или dll необходимо /ZI, чтобы включить редактирование и продолжить.

Я сделал крошечный testlib.lib и использовал "dumpbin/all", чтобы отобразить указатель на информацию об отладке (это крошечный отрывок):

SECTION HEADER #7
.debug$T name
       0 physical address
       0 virtual address
      48 size of raw data
     838 file pointer to raw data (00000838 to 0000087F)
       0 file pointer to relocation table
       0 file pointer to line numbers
       0 number of relocations
       0 number of line numbers
42100040 flags
         Initialized Data
         Discardable
         1 byte align
         Read Only

RAW DATA #7
  00000000: 04 00 00 00 42 00 15 15 D5 EA 1E C9 7C 10 3A 40  ....B...Õê.É|.:@
  00000010: 93 63 CE 95 77 15 49 4A 03 00 00 00 64 3A 5C 64  .cÎ.w.IJ....d:\d
  00000020: 65 76 5C 74 65 73 74 5C 74 65 73 74 6C 69 62 5C  ev\test\testlib\
  00000030: 74 65 73 74 6C 69 62 5C 64 65 62 75 67 5C 76 63  testlib\debug\vc
  00000040: 38 30 2E 70 64 62 00 F1                          80.pdb.ñ

Ответ 2

Если вы можете жить без "редактирования и продолжения", попробуйте использовать /Z7.
Я использую его для всех файлов .lib, которые хранятся в исходном элементе управления. Файл .pdb не создается - информация об отладке хранится внутри .lib файла.