c++ - 在Visual Studio 2012中重建时出现奇怪的链接错误

标签 c++ visual-studio-2012 linker

我有一个很奇怪的问题。我在VS2012中有一个项目,该项目与另一个lib静态链接。
如果我构建项目,一切都很好。
但是,如果我重建该项目,它将因链接问题而失败。
lib已编译,在构建过程中我不对其进行编译。
如果我清理所有内容或在先前的构建基础上进行构建/重建,则没有区别。
构建工程,重建-不!


谁能给我至少一个线索-这两个命令有什么不同?我什至不知道如何开始调查这个问题。

补充:

对于所有回答的人-您正在尝试向我解释构建和重建之间的区别。谢谢,但我知道。您忽略了我之前解释的事实:

我可以完全清除以前的结果,删除OutDir,删除IntDir,删除编译产生的所有内容。仍然-建立工作,不重建。

在上述情况下-如果您是首次构建,则构建和重建之间有什么区别?

我没有发布错误的原因是那些仅仅是链接错误,告诉我.lib丢失。虽然显然不是。

这是示例:

1> C:\ Program Files(x86)\ Microsoft Visual Studio 11.0 \ VC \ include \ sal.h(2872):警告RC4005:'_useHeader':重新定义
1>
1> C:\ Program Files(x86)\ Microsoft Visual Studio 11.0 \ VC \ include \ sal.h(2882):警告RC4005:'_on_failure':重新定义
1>
1>创建库D:\ p4client \ ProAudio \ dev_main \ ProAudio \ XPlatform .. \ VisualStudioBuildProducts \ WaveShell-DAE \ Win32 \ Debug \ Products \ WaveShell-DAE.lib和对象D:\ p4client \ ProAudio \ dev_main \ ProAudio \ XPlatform .. \ VisualStudioBuildProducts \ WaveShell-DAE \ Win32 \ Debug \ Products \ WaveShell-DAE.exp
1> DefaultSwap.obj:错误LNK2019:函数_RemoveByteSwapper中引用的未解析的外部符号_ASI_UnregisterCustomByteSwapper @ 4
1> DefaultSwap.obj:错误LNK2019:函数_RegisterByteSwapper中引用的未解析的外部符号_ASI_RegisterCustomByteSwapper @ 8
1> PlugInLib.lib(PlugInUtils.obj):错误LNK2001:无法解析的外部符号_imp_FicGestalt @ 8
1> PlugInLib.lib(CDSPProcess.obj):错误LNK2001:无法解析的外部符号_imp_FicGestalt @ 8
1> PlugInLib.lib(CAdaptorPlugIn.obj):错误LNK2001:无法解析的外部符号_imp_FicGestalt @ 8
1> CShellProcessGroup.obj:错误LNK2019:在函数“public:__thiscall CShellProcessGroup::CShellProcessGroup(void)”中引用的未解析的外部符号_imp_FicGestalt @ 8(?? 0CShellProcessGroup @@ QAE @ XZ)
1> CEffectTypeRTAS.obj:错误LNK2001:未解析的外部符号_imp_FicGestalt @ 8
1> PlugInLib.lib(CProcessGroupInterface.obj):错误LNK2001:无法解析的外部符号_imp_FicGestalt @ 8
1> PlugInLib.lib(CProcessGroup.obj):错误LNK2001:无法解析的外部符号_imp_FicGestalt @ 8

知道运行生成(不重建)时,可能会有所帮助,我将收到以下警告:

1> C:\ Program Files(x86)\ Microsoft Visual Studio 11.0 \ VC \ include \ sal.h(2872):警告RC4005:'_useHeader':重新定义
1>
1> C:\ Program Files(x86)\ Microsoft Visual Studio 11.0 \ VC \ include \ sal.h(2882):警告RC4005:'_on_failure':重新定义
1>
1>创建库D:\ p4client \ ProAudio \ dev_main \ ProAudio \ XPlatform .. \ VisualStudioBuildProducts \ WaveShell-DAE \ Win32 \ Debug \ Products \ WaveShell-DAE.lib和对象D:\ p4client \ ProAudio \ dev_main \ ProAudio \ XPlatform .. \ VisualStudioBuildProducts \ WaveShell-DAE \ Win32 \ Debug \ Products \ WaveShell-DAE.exp
1> PlugInLib.lib(C321ChipDSP.obj):警告LNK4099:找不到PDB'vc110_ib_2.pdb'与'PlugInLib.lib(C321ChipDSP.obj)'或在'D:\ p4client \ ProAudio \ dev_main \ ProAudio \ VisualStudioBuildProducts \ WaveShell-DAE \ Win32 \ Debug \ vc110_ib_2.pdb';链接对象,好像没有调试信息
1> PlugInLib.lib(CDSP.obj):警告LNK4099:使用'PlugInLib.lib(CDSP.obj)'或在'D:\ p4client \ ProAudio \ dev_main \ ProAudio \ VisualStudioBuildProducts \中找不到PDB'vc110_ib_3.pdb' WaveShell-DAE \ Win32 \ Debug \ vc110_ib_3.pdb';链接对象,好像没有调试信息
1> PlugInLib.lib(CDSPUtils.obj):警告LNK4099:找不到PDB'vc110_ib_4.pdb'与'PlugInLib.lib(CDSPUtils.obj)'或在'D:\ p4client \ ProAudio \ dev_main \ ProAudio \ VisualStudioBuildProducts \ WaveShell-DAE \ Win32 \ Debug \ vc110_ib_4.pdb';链接对象,好像没有调试信息

谢谢!

最佳答案

构建表示仅编译和链接自上次构建以来已更改的源文件,而 Rebuild 意味着编译和链接所有源文件,无论它们是否更改。

构建是正常的事情,并且更快。有时项目目标组件的版本可能会不同步,因此必须进行重建才能使构建成功。实际上,您不需要清洁。

关于c++ - 在Visual Studio 2012中重建时出现奇怪的链接错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15904749/

相关文章:

c++ - 通过隐式转换返回时是否需要复制构造函数?

c# - xUnit v1 测试出现在 xUnit GUI (xunit.gui.clr4.exe) 但不是 VS 2012 测试资源管理器

c++ - Unresolved external symbol 链接器错误 (C++)

c - CMake — C —多个源文件忽略页眉防护

c++ - 如何重新导出 CLR c++ 静态库

C++ 指针和内存泄漏

c++ - 使用 long double 但不使用 double 的未定义行为

c++ - 如何让编译器在 C++ 中创建默认构造函数?

C++ 将 int 转换为 *LONG

search - 在 Visual Studio 的当前命名空间中查找?