diff --git a/vcpkg安装库错误及解决方法.md b/vcpkg安装库错误及解决方法.md index b5e601f..e54bc8e 100644 --- a/vcpkg安装库错误及解决方法.md +++ b/vcpkg安装库错误及解决方法.md @@ -34,31 +34,32 @@ VCPKG install 库名 --editable,可以在编译前修改库源码 ## 5. vc错误: `error MSB4115: 函数“exists”只接受标量值,但其参数“$(ForceImportBeforeCppTargets)”的计算结果为` -* 报错信息:1>节点 1 上的项目“xxxxxx\buildtrees\libpq\x64-windows-dbg\libpq.vcxproj”(默认目标)。 - 1>C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V140\Microsoft.Cpp.Current.targets(14,11): error MSB4115: 函数“exists”只接受标量值,但其参数“$(ForceImportBeforeCppTargets)”的计算结果为“C:/Users/gz/Desktop/vcpkg-2023.08.09/scripts/buildsystems/msbuild/vcpkg.targets;C:/Users/gz/Desktop/vcpkg-2023.08.09/buildtrees/libpq/x64-windows-dbg/vcpkg-libs.props”,不是标量值。 [xxxxxx\buildtrees\libpq\x64-windows-dbg\libpq.vcxproj] - 1>已完成生成项目“xxxxxx\buildtrees\libpq\x64-windows-dbg\libpq.vcxproj”(默认目标)的操作 - 失败。 +* 报错信息: + > 1>节点 1 上的项目“xxxxxx\buildtrees\libpq\x64-windows-dbg\libpq.vcxproj”(默认目标)。 + > 1>C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V140\Microsoft.Cpp.Current.targets(14,11): error MSB4115: 函数“exists”只接受标量值,但其参数“$(ForceImportBeforeCppTargets)”的计算结果为“C:/Users/gz/Desktop/vcpkg-2023.08.09/scripts/buildsystems/msbuild/vcpkg.targets;C:/Users/gz/Desktop/vcpkg-2023.08.09/buildtrees/libpq/x64-windows-dbg/vcpkg-libs.props”,不是标量值。 [xxxxxx\buildtrees\libpq\x64-windows-dbg\libpq.vcxproj] + > 1>已完成生成项目“xxxxxx\buildtrees\libpq\x64-windows-dbg\libpq.vcxproj”(默认目标)的操作 - 失败。 * 参考链接:https://github.com/conan-io/conan/issues/7806 * 解决方案: - > 修改对应库ports目录内的msvc.cmake文件 - > /p:ForceImportBeforeCppTargets=\"${SCRIPTS}/buildsystems/msbuild/vcpkg.targets\" - > - > /p:ForceImportBeforeCppTargets=\"${build_path}/vcpkg-libs.props\" + > 修改对应库ports目录内的msvc.cmake文件 + > /p:ForceImportBeforeCppTargets=\"${SCRIPTS}/buildsystems/msbuild/vcpkg.targets\" + > + > /p:ForceImportBeforeCppTargets=\"${build_path}/vcpkg-libs.props\" ## 5. 编译GDAL 出现 +[](){}; 加号不明确 * 错误信息: - > xxxxxx\buildtrees\gdal\src\v3.7.1-30395dad39\ogr\ogrsf_frmts\openfilegdb\filegdbindex_write.cpp(1298): error C2593: “operator +”不明确 - > xxxxxx\buildtrees\gdal\src\v3.7.1-30395dad39\ogr\ogrsf_frmts\openfilegdb\filegdbindex_write.cpp(1298): note: 可能是“内置 C++ operator+(void (__cdecl *)(std::vector> &,const __int64 &,int))” - > with - > [ - > _Ty=GByte - > ] - > xxxxxx\buildtrees\gdal\src\v3.7.1-30395dad39\ogr\ogrsf_frmts\openfilegdb\filegdbindex_write.cpp(1298): note: 或 “内置 C++ operator+(void (__vectorcall *)(std::vector> &,const __int64 &,int))” - > with - > [ - > _Ty=GByte - > ] - > xxxxxx\buildtrees\gdal\src\v3.7.1-30395dad39\ogr\ogrsf_frmts\openfilegdb\filegdbindex_write.cpp(1298): note: 尝试匹配参数列表“(OpenFileGDB::FileGDBTable::CreateSpatialIndex::)”时 + > xxxxxx\buildtrees\gdal\src\v3.7.1-30395dad39\ogr\ogrsf_frmts\openfilegdb\filegdbindex_write.cpp(1298): error C2593: “operator +”不明确 + > xxxxxx\buildtrees\gdal\src\v3.7.1-30395dad39\ogr\ogrsf_frmts\openfilegdb\filegdbindex_write.cpp(1298): note: 可能是“内置 C++ operator+(void (__cdecl *)(std::vector> &,const __int64 &,int))” + > with + > [ + > _Ty=GByte + > ] + > xxxxxx\buildtrees\gdal\src\v3.7.1-30395dad39\ogr\ogrsf_frmts\openfilegdb\filegdbindex_write.cpp(1298): note: 或 “内置 C++ operator+(void (__vectorcall *)(std::vector> &,const __int64 &,int))” + > with + > [ + > _Ty=GByte + > ] + > xxxxxx\buildtrees\gdal\src\v3.7.1-30395dad39\ogr\ogrsf_frmts\openfilegdb\filegdbindex_write.cpp(1298): note: 尝试匹配参数列表“(OpenFileGDB::FileGDBTable::CreateSpatialIndex::)”时 * 原因分析:由于C++版本原因,低版本并不支持该转换,因此直接去掉转换即可 * 解决方法:尝试去掉lambda前面的加号(该加号用于将lambda表达式转为传统函数指针,兼容老代码)