我在 Delphi Prism 2010 中遇到了一个我无法解决的奇怪编译器错误。错误是调用在第三方程序集中定义的对象上的方法,该程序集操纵专门的图像格式。程序集本身是针对 .Net 2.0 运行时编译的。
尽管提供了正确的参数列表,但我始终收到错误消息和一系列警告消息,表明参数列表不正确。VS 2008 IDE 也拒绝执行参数完成,但正确显示方法原型并允许使用 Ctrl-Space 添加方法。下面是编译器错误的缩写版本来说明问题:
错误 1 (PE19) 没有使用这些参数的重载方法“GetTempMapOfIRSensor”
警告 2 (PH2) 最佳匹配“Image.GetTempMapOfIRSensor(var rectOnSensor: System.Drawing.Rectangle; out average: System.Double; out minTempArrayIndex: System.Int32; out maxTempArrayIndex: System.Int32; desiredTempUnits: Image.TEMP_UNIT): array System.Double 与参数 1 不匹配,参数为“System.Drawing.Rectangle”应为“System.Drawing.Rectangle”
警告 3 (PH2) 最佳匹配“Image.GetTempMapOfIRSensor(var rectOnSensor: System.Drawing.Rectangle; out average: System.Double; out minTempArrayIndex: System.Int32; out maxTempArrayIndex: System.Int32; desiredTempUnits: Fluke.Thermography.TEMP_UNIT) : System.Double 数组与参数 2 不匹配,参数为“System.Double”应为“System.Double”
....每个剩余参数的类似警告列表
奇怪的是编译器抱怨每个参数的类型不匹配,但错误消息显示参数类型名称相同(例如参数是“System.Double”应该是“System.Double”)。
欢迎任何有关如何解决和解决此问题的建议。除了这一种方法之外,有问题的类似乎在其他所有方面都运行良好。我还能够在具有相同签名的本地类上创建一个方法,并在没有错误的情况下调用它。
更新:
使用反射和相同的参数列表调用该方法可以正常工作。这看起来是某种编译器错误/限制。