我有一个 C 库 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 时,它因抛出运行时异常而崩溃。
最佳答案
你的声明是错误的。由于历史原因,VB6 Integer 是 16 位,而 C int 是 32 位。请改用 Long。
Private Declare Function AddVersion Lib "cdll.dll" (ByVal Repval As Long) As Long
关于从 VB 6.0 dll 调用 win 32 C 库函数崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3193589/