You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.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.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 13:00:56