从MS访问调用dll函数

时间:2014-02-02 18:42:49

标签: c++ c vba dll

嗨我想在 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);

1 个答案:

答案 0 :(得分:1)

DLL中的函数未指定调用约定。因此,假设它使用默认值__cdecl。这意味着无法从VBA访问它。您可以调用它的唯一方法是创建一个适配器DLL,用于导出要调用的VBA的__stdcall函数。然后,适配器DLL可以将调用转发到原始__cdecl函数。