ActiveX 使用 C# 返回的 VARIANT 为 NULL

Posted

技术标签:

【中文标题】ActiveX 使用 C# 返回的 VARIANT 为 NULL【英文标题】:VARIANT returned by ActiveX using C# is NULL 【发布时间】:2014-08-05 19:02:01 【问题描述】:

拥有使用 VS2008 用 C++ 编写的 ActiveX 对象的源代码。拥有使用 VS2008 调用相同 ActiveX 对象的 C++ 编写的 MFC 主程序的源代码。一切正常。现在必须使用访问相同 ActiveX 对象的 VS2010 创建用 C# 编写的 Windows 窗体应用程序。使用VS2010,点击Tools,点击Choose Toolbox Items,点击COM Components选项卡,浏览到ActiveX OCX文件,点击Open,成功导入COM Components列表。在 C# 源的派生 Form 类中创建 ActiveX 对象。可以成功实例化 ActiveX 对象。可以成功调用CreateControl。可以成功地将几种方法调用到 ActiveX 对象中。但是在调用返回 VARIANT 的 ActiveX 对象中的方法时遇到问题。在寻址相关方法时,C# 指示返回“对象”。不幸的是,返回的“对象”是 NULL。如何解决?谢谢。

【问题讨论】:

【参考方案1】:

在没有任何回应的情况下,经过 19 次查看,除了 1 次没有评论礼貌的不回应的反对票外,结论是 C# 无法处理按值返回 VARIANT 的方法。

【讨论】:

以上是关于ActiveX 使用 C# 返回的 VARIANT 为 NULL的主要内容,如果未能解决你的问题,请参考以下文章

将 VARIANT 转换为无符号字符数组

如何在 c# dllimport 中指定 c++ Variant 返回类型

如何从 C# 中的方法返回等效的 VB6 Variant 类型

ATL ActiveX 控件如何向 javascript 公开布尔值

使用C#开发ActiveX控件

C#创建ActiveX