一、问题发生环境
1、Windows 10 企业版
2、Visual Studio2017 企业版
3、编译源码exiv2-main源码
二、问题
1>E:\worspace_Gis\qgis-3.10.0\dependency\exiv2-main\src\tiffimage_int.cpp(1793): fatal error C1001: 编译器中发生内部错误。
1>(编译器文件“msc1.cpp”,第 1518 行)
1> 要解决此问题,请尝试简化或更改上面所列位置附近的程序。
三、错误发生原因
根据Visual Studio2017输出的提示可以知道,是tiffimage_int.cpp的1793行附近的代码存在问题。笔者经过反复检查发现是1793行附近的代码中:EXV_COMPLEX_BINARY_ARRY 宏展开错误。
四、修改代码解决问题
1、头文件修改(tiffcomposite_int.hpp)
//template<const ArraySet* arraySet, int N, CfgSelFct cfgSelFct>
template<int N, const ArraySet (&arraySet)[N], CfgSelFct cfgSelFct>
TiffComponent::UniquePtr newTiffBinaryArray2(uint16_t tag, IfdId group)
{
return TiffComponent::UniquePtr(
new TiffBinaryArray(tag, group, arraySet, N, cfgSelFct));
}
2、源文件修改(tiffimage_int.cpp)
#define EXV_COMPLEX_BINARY_ARRAY(arraySet, cfgSelFct) (newTiffBinaryArray2<EXV_COUNTOF(arraySet), arraySet, cfgSelFct>)
//#define EXV_COMPLEX_BINARY_ARRAY(arraySet, cfgSelFct) (newTiffBinaryArray2<arraySet, EXV_COUNTOF(arraySet), cfgSelFct>)