如何将数组(通过引用,在VB6中)传递给C \ C ++ * .dll子例程?

我需要将一个空的变量数组传递给用C编写的DLL(并且在所有Windows版本上都可用),并且C代码(我无法控制并且无法编辑)将填充变量空数组及其一些返回值值。

基本上,当我尝试这个时 – 当它应该包含函数/子调用的结果时,ByRef数组总是空的(如果我在.NET中执行完全相同的操作,它可以工作)。

我想我需要做一个自定义声明,所以VB知道如何调用C函数,或者?

以下是C子/函数的声明方式。 鉴于此,我需要做些什么才能确保C能够正确使用我的空数组并且我可以获得我的结果?

HRESULT InvokeAction( [in] BSTR bstrActionName, [in] VARIANT varInActionArgs, [in, out] VARIANT *pvarOutActionArgs, [in, out] VARIANT *pvarRetVal ); 

有关此function的更多信息: http : //msdn.microsoft.com/en-us/library/aa382237(VS.85).aspx

谢谢

来自http://msdn.microsoft.com/en-us/library/aa381230(VS.85).aspx :

 Dim returnVal Dim outArgs(1) Dim args(1) args(0) = 3 returnVal = service.InvokeAction("GetTrackInfo", args, outArgs) 'return Val now contains the track length 'and outArgs(0) contains the track title Dim emptyArgs(0) returnVal = service.InvokeAction("Play", emptyArgs, emptyArgs) 'returnVal indicates if the action was successful 

但是,从这个例子来看,你的服务和实例并不清楚。