【发布时间】:2014-02-02 18:42:48
【问题描述】:
您好,我正在尝试在 ms access vba 中调用此函数。它只是抛出了糟糕的调用约定。我试图重新编译访问但 zilch。我之前调用过 dll 函数,所以也许我错过了一些基本的东西,或者可能与 dll 文件有一些不兼容。提前感谢您的帮助。
我的 ms 访问代码
Private Declare Function StartComm Lib "C:\ComConcert.dll" ( _
ByVal ulPort As Long, ByVal ulBaudRate As Long, ByVal ulByteSize As Long, _
ByVal ulParity As Long, ByVal ulStopbits As Long, ByVal lncontrol As Long) _
As Long
Dim OpnPort As Long
OpnPort = StartComm(3, 9600, 7, 0, 0, 0)
dll 文件的原始 c 代码。
DLLEXPORT unsigned long StartComm(unsigned long ulPort, unsigned long ulBaudRate,
unsigned long ulByteSize, unsigned long ulPartity, unsigned long ulStopBits,
unsigned long ulFlowControl);
【问题讨论】:
-
显然
Long和unsigned long不是匹配类型。尝试仅使用long而不使用unsigned。 -
@πάνταῥεῖ 这些类型匹配得很好。由于 VBA 没有无符号类型,因此您无法做得更好。我不认为DLL可以更改。所以参数类型是正确的。