2010-07-07 98 views
0

我有一個C庫Cdll.dll其具有的功能調用從VB 6.0 DLL勝利32 C庫函數崩潰

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 

我從C DLL調用這個VB DLL,爲VB DLL創建一個COM包裝器。

ret = ObjVbclass->VbMessageHandler(&IntegerValue); 

當我在C exe應用程序中使用此VBWrapper DLL時,它通過拋出運行時異常來崩潰。

回答

3

您的聲明是錯誤的。由於歷史原因,VB6整數是16位,C int是32位。改用Long。

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

使用Long也沒有避免崩潰。還有其他建議嗎? – Karthick 2010-07-12 06:49:30

+0

您需要描述「崩潰」。 – 2010-07-12 08:00:37

+0

VBwrapperdll(C dll)從C應用程序中的線程執行。線程退出時出現異常(在調試應用程序時觀察到)。沒有收到輸出。錯誤處理程序直接在VB應用程序中調用。 – Karthick 2010-07-12 12:07:40