.NET Core COM组件out参数在Tcl TWAPI中无法生成输出变量问题
.NET Core COM组件out参数在Tcl TWAPI中无法正常传递的问题
问题背景
按照微软官方指南创建.NET Core类库并暴露为COM组件,实现返回圆周率的基础功能运行正常。但将结果改为out参数输出后,在Tcl TWAPI(4.7.2版本,基于Tcl 8.6)中调用时,无法在Tcl端生成对应的输出变量;而相同的COM组件在PowerShell和VBS中调用可正常获取out参数的值。本地其他已注册COM组件在Tcl TWAPI中调用正常,推测.NET Core COM组件可能存在特定构建选项要求。
2023年8月28日更新:经测试发现,目标框架设为net7.0的类库在TWAPI中表现如同未定义专用接口,而将相同代码迁移至.NET Framework 4.8项目则可正常工作。
相关代码示例
.NET Core中含out参数的方法实现
public string ComputePi(out string result) { // 计算圆周率的逻辑 double piResult = 4.0 * sum; result = piResult.ToString(); return "done"; }
Tcl TWAPI调用代码
package require twapi set handle [::twapi::comobj ComTest.Application] $handle ComputePi result puts $result
VBS正常调用的示例代码
Set myObject = CreateObject("ComTest.Application") myObject.ComputePi test msgbox test
可正常工作的.NET Framework 4.8接口与类定义
[ComVisible(true)] [Guid("fe45fc36-c5b9-4499-8d31-7f5db7d4a12f")] public interface OwnInterface { string ComputePi(out string result); } [ComVisible(true)] [ClassInterface(ClassInterfaceType.None)] [Guid("BA9AC84B-C7FC-41CF-8B2F-1764EB773D4B")] public class Application : OwnInterface { public string ComputePi(out string result ) // 实现逻辑 ... }
内容的提问来源于stack exchange,提问作者Paul G.
相关产品推荐
相关产品推荐

