从VB 6.0 DLL调用win 32 C库函数崩溃

时间:2010-07-07 09:43:29

标签: c vb6

我有一个C Library Cdll.dll,它具有

功能
int _stdcall AddVersion(int repval) 
{
    return (repval + 10);
}

我从VB dll调用此AddVersion函数。

Private Declare Function AddVersion Lib "cdll.dll" (ByVal Repval As Integer) As Integer
...

Public Function VbMessageHandler(ByRef intVal As Integer) As Integer
   intVal = AddVersion(10)
End Function

我通过为VB dll创建一个COM包装器从C dll调用这个VB dll。

ret = ObjVbclass->VbMessageHandler(&IntegerValue);

当我在我的C exe应用程序中使用这个VBWrapper dll时,它会因抛出Runtime异常而崩溃。

1 个答案:

答案 0 :(得分:3)

您的声明是错误的。由于历史原因,VB6整数是16位,C int是32位。请改用Long。

Private Declare Function AddVersion Lib "cdll.dll" (ByVal Repval As Long) As Long