2

我在Delphi Prism 2010中遇到了一个奇怪的编译器错误,我无法解决。该错误是调用第三方程序集中定义的对象的方法,该对象操纵特定的图像格式。程序集本身是针对.Net 2.0 Runtime编译的。为什么Delphi Prism抱怨系统类型不匹配?

尽管提供的参数正确的名单,我一直得到一个错误,并表示系列的参数列表是不正确的警告消息。 VS 2008 IDE也拒绝执行参数完成,但正确显示方法原型并允许使用Ctrl-Space添加方法。下面是编译器的错误的简化版本来说明问题:

错误1(PE19)没有重载方法“GetTempMapOfIRSensor”与这些参数

警告2(PH2)最佳匹配“图像.GetTempMapOfIRSensor(VAR rectOnSensor:System.Drawing.Rectangle;出平均:System.Double;出minTempArrayIndex:System.Int32;出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;超出平均值: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”)

任何有关如何排除故障和解决此问题的建议都是值得欢迎的。除了这一个方法外,有问题的类似乎在每个o尊重。我也可以在具有相同签名的本地类上创建一个方法,并且无错误地调用它。

更新:

使用反射和相同的参数列表调用方法正常工作。这看起来是某种编译器错误/限制。

回答

1

如果此库有超负荷的非var/out & var或out参数,并且其余签名相同,请关闭隐式out/var参数的选项,并在它们所在的位置添加& var需要。这应该修复,否则QC条目通常会很快修复,如果它是一个错误。

相关问题