3

我被要求帮助一位同事解决一个常见解决方案中的一个项目中的神秘构建错误。构建错误发生在链接阶段,在包含该 a.lib 的库 (b.lib) 中使用静态库 (a.lib) 中定义的类构造函数时找不到。经过仔细调查,我发现:

  1. 构造函数在类中正确定义。
  2. 该类在属于该项目的 cpp 文件中定义。
  3. 如果尝试使用智能感知导航到 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 库时,它不是,因此没有创建目标文件。

无法编译cpp文件

可能是什么原因?我该如何解决?

我正在使用 Visual Studio Professional 2015 Update 3。

4

1 回答 1

2

在 VS 2015 中,编译包含 . vcxproj项目文件应按字典顺序排列

这在 VS 2017 中不再需要,但是当它不被尊重时,VS 2015 可能会造成这种混乱。

您的同事手动修改了 . vcxproj项目文件包含该文件,但他没有遵守字典顺序。您只需从项目中删除文件重新添加即可。Visual Studio 会将它包含在正确的位置,您的构建将成功。

希望这也可以帮助其他人。

于 2018-08-20T12:52:50.383 回答