gpt4 book ai didi

c++ - 如何将包含数组 ByVal 的结构传递给 C++?

转载 作者:太空宇宙 更新时间:2023-11-04 12:03:59 25 4
gpt4 key购买 nike

我正在使用第三方 C++ dll,它使用具有以下签名的函数:

extern "C" __declspec(dllimport) int __stdcall CalcDDtable(struct ddTableDeal tableDeal, 
struct ddTableResults * tablep);

每个结构仅包含一个固定的 int(VB6 Long)一维数组。 tablep 将包含结果。

如果 C++ 声明是:

extern "C" __declspec(dllimport) int __stdcall CalcDDtable(int * tableDeal, int * tablep);

那么 VB6 Declare 语句将是:

Declare Function CalcDDtable Lib "my3rdParty.dll"(ByRef lngTable as Long,ByRef lngResult as Long) as int
This code would be called like:
Dim lngTables(15) As Long
Dim lngResults(20) As Long

'Initialize the lngTables array...

intResult=CalcDDtabel(lngTables(0),lngResults(0))

但是我不知道如何声明上面的函数,因为第一个数组被打包在一个不是指针的结构中。

最佳答案

您不能按值将结构从 VB6 传递到 DLL。 tableDeal 结构是按值(不是指针)所以我不确定你可以在那里做什么。

您可以通过引用传递结构,它们可以包含固定长度的数组,因此您的第二个参数就可以了。事实上,如果它包含一个固定长度的整数数组,您可以像问题的第二部分那样传递一个固定长度的 VB6 长数组。

关于c++ - 如何将包含数组 ByVal 的结构传递给 C++?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12964908/

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