作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我需要将一个空的变体数组传递给用 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/
我是一名优秀的程序员,十分优秀!