使用VS2005构建静态库时,我不断收到链接器警告,表明我的library.lib无法找到VC80.pdb.显然,因此,IDE的编辑和继续功能无法处理包含library.lib的任何项目
需要什么魔法才能告诉VS2005生成带编辑的静态库并继续调试信息,在链接到项目时不引用或需要vs80.pdb?
- 进一步理解 - 因此,为了使编译并继续使用预编译的静态库,我们需要将vs80.pdb和vs80.pdb文件与.lib一起放入SVN,AND重命名pdb/idb以防止在使用多个预编译库执行此操作时发生冲突.
vc80.pdb是包含lib的调试信息的文件.在ide属性页面中:配置属性:c\c ++:输出文件允许您将其重命名为更合适的名称,例如lib的名称.当链接器将您的lib链接到目标exe时,它会查找此pdb(在lib中有一个指向它的指针)并从该pdb中提取信息并将其放在exe的pdb中.
/ Fd [name]是重命名pdb/ZI的选项,用于使用包含编辑和继续信息的pdb进行编译.
所有链接的库和最终的taget 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.ñ