gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 21:29:49 25 4
gpt4 key购买 nike

我需要将一个空的变体数组传递给用 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
);

有关此功能的更多信息: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

不过,从这个例子中并不清楚您是如何获得和服务实例的。

关于c# - 如何将数组(在 VB6 中通过引用)传递给 C\C++ *.dll 子例程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4035599/

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