我在Delphi Prism 2010中遇到一个奇怪的编译错误,我无法解决。该错误是在第三方程序集中定义的对象上调用方法,该对象操纵特定的图像格式。程序集本身是根据.Net 2.0 Runtime编译的。
尽管提供了正确的参数列表,但我始终收到错误,并且一系列警告消息指示参数列表不正确。 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):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”)
欢迎任何有关如何解决和解决此问题的建议。除了这一种方法之外,所讨论的类似乎在其他所有方面都能正常工作。我也能够在具有相同签名的本地类上创建一个方法,并且无错误地调用它。
更新
使用反射调用方法并且相同的参数列表正常工作。这看起来是某种编译器错误/限制。
答案 0 :(得分:1)
如果此库有非var / out&的重载var或out参数与其余签名相同,关闭隐式输出/ var参数的选项并添加& var在他们需要的地方。这应该修复,否则QC条目通常会很快修复,如果它是一个错误。