嗨我想在 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);
答案 0 :(得分:1)
DLL中的函数未指定调用约定。因此,假设它使用默认值__cdecl
。这意味着无法从VBA访问它。您可以调用它的唯一方法是创建一个适配器DLL,用于导出要调用的VBA的__stdcall
函数。然后,适配器DLL可以将调用转发到原始__cdecl
函数。