我有一个普通的 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”(它实际上意味着结构)。
请帮忙。谢谢。
像这样:
myfunction((**InstOut).elt)
myfunction((*InstOut)->elt)