我被要求帮助一位同事解决一个常见解决方案中的一个项目中的神秘构建错误。构建错误发生在链接阶段,在包含该 a.lib 的库 (b.lib) 中使用静态库 (a.lib) 中定义的类构造函数时找不到。经过仔细调查,我发现:
- 构造函数在类中正确定义。
- 该类在属于该项目的 cpp 文件中定义。
- 如果尝试使用智能感知导航到 cpp 文件或类构造函数,一切都会按预期进行。
vcxproj 文件 ClCompile ItemGroup:
...
<ClCompile Include="Source\CMYKOVBLab.cpp" />
<ClInclude Include="Source\CMYKOBGLab.cpp" /> <--- The file is here.
<ClCompile Include="Source\CMYKOVBRGB.cpp" />
...
总之,链接库所需的东西在那里,但链接错误仍然存在。
我注意到的一件奇怪的事情是,没有找到类构造函数的 cpp 无法通过按 Ctrl-F7 或 a.lib 中的右键来编译。该选项显示为灰色,但仅适用于该特定文件。此外,当我构建应该编译该文件的 a.lib 库时,它不是,因此没有创建目标文件。
可能是什么原因?我该如何解决?
我正在使用 Visual Studio Professional 2015 Update 3。