代码之家  ›  专栏  ›  技术社区  ›  Erx_VB.NExT.Coder

如何将数组(通过引用,在VB6中)传递给C++的C++ *DLL子程序?

  •  3
  • Erx_VB.NExT.Coder  · 技术社区  · 14 年前

    基本上,当我尝试这样做时-当ByRef数组应该包含函数/子调用的结果时,它总是空的(如果我在.NET中做了完全相同的事情,它就工作了)。

    我想我需要做一个自定义声明,这样VB就知道如何调用C函数,还是?

    下面是如何声明C子/函数的。鉴于此,我需要做什么来确保C能够正确地使用我的空数组,并最终得到我的结果?

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

    有关此功能的详细信息: http://msdn.microsoft.com/en-us/library/aa382237(VS.85).aspx

    1 回复  |  直到 14 年前
        1
  •  3
  •   Patrick McDonald    14 年前

    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
    

    不过,从这个示例中不清楚如何获取服务和服务实例。