将参数传递给DLL

pass parameters to dll?

本文关键字:DLL 参数传递      更新时间:2023-10-16

我是C 的新手。我正在使用访问的项目调用DLL(由C 编译)。我想了解如何将参数传递到dll。

在访问中准备了DLL的输入数据,我们从访问中调用DLL。我们将" RunFunction"与我们要致电的DLL相关联。访问中的行调用DLL:

Results = RunFunction(Data.age, Data.calendar, Data.timesheet, Data.extra)

符合DLL的CPP代码:

double __stdcall RunFunction(double * iData, double(*iCalendar)[100], double(*iTimesheet)[100])

第一个问题,从CPP代码中,我发现 *IDATA(in C )实际上包含来自数据(访问中)的所有信息。为什么会发生?我认为只有数据。

第二个问题,访问中的运行功能具有四个输入参数,而C 只需三个,为什么不会引起任何问题?

首先,请考虑内部访问Data.age的值可能在包含整个记录或其他结构的缓冲区内。因此,当一个值的地址以C 传递给您时,您可以探索相邻的地址并查看其中的内容。不要那样做!

第二,查看__stdcall的工作方式。它是在C的早期设计的,当时根本没有检查功能论点!您可以在呼叫者侧的较少或更多参数传递,而不要弄乱堆栈。如果您通过额外的话,没什么大不了的。如果您退出一些,那么在功能中使用最右的名称将为垃圾值和 Witing 向它们提供各种问题,包括寄回返回地址。