Visual studio 将调试生成链接到发布库:警告LNK4204
我使用的是VC10(但我想这适用于VC9、VC10和VC11)。简而言之,我想编译一个发布库,发布它,并允许用户在调试或发布应用程序时链接到该库。令人恼火的是,我一直收到LNK4204错误,例如:Visual studio 将调试生成链接到发布库:警告LNK4204,visual-studio,debug-symbols,linker-warning,Visual Studio,Debug Symbols,Linker Warning,我使用的是VC10(但我想这适用于VC9、VC10和VC11)。简而言之,我想编译一个发布库,发布它,并允许用户在调试或发布应用程序时链接到该库。令人恼火的是,我一直收到LNK4204错误,例如: mylib.lib(an_object_in_my_lib.obj) : warning LNK4204: '[PATH TO USER APPLICATION INTERMEDIATE DIRECTORY]\vc100.pdb' is missing debugging information fo
mylib.lib(an_object_in_my_lib.obj) : warning LNK4204: '[PATH TO USER APPLICATION INTERMEDIATE DIRECTORY]\vc100.pdb' is missing debugging information for referencing module; linking object as if no debug info
好的。我明白这是什么意思。我最初的反应是“好吧,把它关掉将是微不足道的”。然而,我找不到办法来阻止这一点。令我惊讶的是:
现在的“解决方案”似乎是创建一个库的调试版本(我没问题),但保持调试信息“禁用”。当我这样做的时候,我没有抱怨。这很奇怪,因为在这两种情况下都没有调试信息(将调试链接到发行版和调试链接到调试),但是当链接到调试库时,我没有收到任何警告。到目前为止,这有点神秘。如果我有时间,我会进一步调查。也许我错过了什么 防止警告的唯一方法是提供符号信息。如果你很聪明,你可以提供足够的符号信息来满足链接器的要求,但不足以提高你想象中的风险,使代码更容易进行反向工程。你应该能够禁用调试信息。恐怕这对我不起作用。我试图在创建库时关闭它,因此我没有“生成调试信息”选项。我不想在用户应用程序上关闭该选项。此外,删除时,调试信息格式将恢复为默认格式。