如何取消引用 C 指针到结构体指针

问题描述 投票:0回答:1

我有一个普通的 C 结构体和 C 函数,通过该结构体传递。来说说吧

typedef struct {
    char Help[64];
} stHelper;

int myfunction (stHelper test)

这是我想在 LabVIEW 中调用的 DLL 内部。由于某种原因,无法正确调用该函数,但我没有源代码,我想为 LabVIEW 编写一个包装 DLL。不是直接从原始 DLL 而是从包装器调用该函数的函数。在LabVIEW中使用C节点时,您可以导出使用LabVIEW典型数据类型的C文件。它还会生成一个额外的结构:

typedef struct {
    int32_t dimSize;
    stHelper elt[1];
} TD1;
typedef TD1 **TD1Hdl;

这应该是名字

TD1Hdl
的句柄。它被传递给像

这样的包装函数

int mywrapper(TD1Hdl InstOut)

在 Visual Studio 中,在包装器 DLL 项目中,我无法弄清楚如何取消引用

elt
数组,以便将其传递给原始函数。

我尝试过(注意,我知道 C 指针基础知识,但不是一切,所以可能会有毫无意义的项目):

myfunction(**InstOut.elt)
myfunction(**InstOut.elt[0])
myfunction(InstOut.elt[0])
myfunction(InstOut.elt)
myfunction(InstOut->elt[0])
myfunction(InstOut->elt)

但是 VS 一直说“预期是指向类的指针类型,但它的类型是 TD1Hdl”(它实际上意味着结构)。

请帮忙。谢谢。

c dereference
1个回答
0
投票

像这样:

myfunction((**InstOut).elt)
myfunction((*InstOut)->elt)
© www.soinside.com 2019 - 2024. All rights reserved.