2

我在 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”)。

欢迎任何有关如何解决和解决此问题的建议。除了这一种方法之外,有问题的类似乎在其他所有方面都运行良好。我还能够在具有相同签名的本地类上创建一个方法,并在没有错误的情况下调用它。

更新:

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

4

1 回答 1

1

如果此库具有非 var/out & var 或 out 参数的重载,并且签名的其余部分相同,请关闭隐式 out/var 参数的选项并在需要的地方添加 out & var。这应该可以修复,否则 QC 条目通常会很快修复,如果它是一个错误的话。

于 2010-02-17T20:16:41.990 回答