在常见解决方案中,有人要求我帮助一位同事解决一个项目中的神秘构建错误。生成错误发生在链接阶段,当在包含a.lib的库(b.lib)中使用静态库(a.lib)中定义的类构造函数时,找不到该构造函数。经过仔细的调查,我发现:
vcxproj文件ClCompile ItemGroup:
...
<ClCompile Include="Source\CMYKOVBLab.cpp" />
<ClInclude Include="Source\CMYKOBGLab.cpp" /> <--- The file is here.
<ClCompile Include="Source\CMYKOVBRGB.cpp" />
...
总而言之,这里存在链接库所需的内容,但是链接错误仍然存在。
我注意到的一件奇怪的事是,通过按Ctrl-F7或a.lib中的右键无法编译未找到具有类构造函数的cpp。该选项显示为灰色,但仅适用于该特定文件。此外,当我构建应该在其中编译该文件的a.lib库时,它不是,因此没有创建目标文件。
可能是什么原因?我该如何解决?
我正在使用Visual Studio Professional 2015 Update 3。
答案 0 :(得分:1)
在VS 2015中, vcxproj 项目文件中定义的编译包含文件应按
VS 2017不再需要此功能,但如果不遵守它,VS 2015可能会造成这种混乱。
您的同事已经手动修改了。 vcxproj 项目文件以包含该文件,但是他不遵守字典顺序。您只需从项目中删除文件,然后再次将其添加回。 Visual Studio会将其包含在正确的位置中,您的构建将成功。
希望这也可以帮助其他人。