​一、问题​发生环境

​​1、Windows 10 企业版

2、Visual Studio 2017 企业版

3、编译exiv2-main源码

二、问题

fatal error C1001:编译器发生内部错误(编译器文件“msc1.cppp”,第1518行)_fatal error C1001

 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>)