gpt4 book ai didi

.net - 通过 COM 可见 DLL 从 VB6 调用 .NET 方法

转载 作者:行者123 更新时间:2023-12-01 15:54:38 26 4
gpt4 key购买 nike

我创建了一个 .NET DLL,它使一些方法 COM 可见。

一种方法是有问题的。它看起来像这样:

bool Foo(byte[] a, ref byte[] b, string c, ref string d)

当我试图调用该方法时,VB6 给出了一个编译错误:

Function or interface marked as restricted, or the function uses an Automation type not supported in Visual Basic.

我读到数组参数必须通过引用传递,所以我更改了签名中的第一个参数:

bool Foo(ref byte[] a, ref byte[] b, string c, ref string d)

VB6 仍然给出相同的编译错误。

如何更改签名以与 VB6 兼容?

最佳答案

需要用“ref”声明数组参数。您的第二次尝试应该工作得很好,也许您忘记重新生成 .tlb?

测试代码:

[ComVisible(true)]
public interface IMyInterface {
bool Foo(ref byte[] a, ref byte[] b,string c, ref string d);
}

[ComVisible(true)]
public class MyClass : IMyInterface {
public bool Foo(ref byte[] a, ref byte[] b, string c, ref string d) {
throw new NotImplementedException();
}
}


Dim obj As ClassLibrary10.IMyInterface
Set obj = New ClassLibrary10.MyClass
Dim binp() As Byte
Dim bout() As Byte
Dim sinp As String
Dim sout As String
Dim retval As Boolean
retval = obj.Foo(binp, bout, sinp, sout)

关于.net - 通过 COM 可见 DLL 从 VB6 调用 .NET 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/233284/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com