Chr*_*cke 14 visual-studio-2005 visual-c++
使用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.ñ
Run Code Online (Sandbox Code Playgroud)