来自VBA的C dll调用:奇怪的行为

时间:2014-11-21 18:08:40

标签: c vba dll

我使用以下函数编写一个64位编译的C dll:

中的.h:

_FF_EXPORT double __stdcall add(double a, double b);
<。>中的

double __stdcall add(double a, double b)
{
   return a+b;
}

然后我从VBA(也是64位)调用它:

Private Declare PtrSafe Function add Lib "sample.dll" (ByVal a As Double, ByVal b As Double) As Double

Public Sub addExcel()
On Error GoTo Err
    Dim a As Double
    Dim b As Double
    Dim res as Double

    a = 1
    b = 2
    res = add(a, b)
Err:
End Sub

当我在VisualStudio中调试我的dll时,我在手表中看到了 a = 0。,b = 2。

所以看起来'a'没有得到正确的价值。 如果不使用double,我使用int(在vba和dll中),我得到正确的值。 事实上,根据我使用的变量类型及其数量,有时我得到我想要的,有时是0。

这可能与我正在处理64位的事实有关吗? 还有其他想法吗?

0 个答案:

没有答案