ActiveX dll
我在尝试从旧的(但仍然维护的)VB6
exe project
(*)源构建一个以便通过COM / NET
互操作执行一些测试时偶然发现了这一点。
(所需)用例是:
- 使用公共方法获取
VB6
或返回一些控制(例如CommonDialog
)引用的类 - 将此类编译为 ActiveX dll
- 通过 .NET 中的 COM 互操作创建此类的实例并正确调用其方法
简而言之,第一个问题是有类似的东西
Public Function bad_dlg() As CommonDialog
Set bad_dlg = Nothing
End Function
在 Visual Basic 6ActiveX dll
的类文件中使编译 (* *) 失败并出现以下错误:
“私有对象模块不能在公共对象模块中用作公共过程的参数或返回类型、公共数据成员或公共用户定义类型的字段”
因此,问题是:
- 真的不可能像上面那样编译和运行吗?
- [如果不是]假设,我将所有内容更改为返回和接收
VB6
Object
类型的实例——我如何从 .Net 使用这样的实例(调用特定方法等)
(*) - 不是一个ActiveX exe
,只是一个“普通”的
(* *) 前提.ocx
是引用了适当的 ("Microsoft Common Dialog Control 6.0 (SP6)", C:\Windows\system32\ComDlg32.OCX)
(* * *) 我发现的唯一一个是将控制引用传递给 dll