Aufruf von C++ dll in VB6 funktioniert nicht
-
Hallo!
Ich habe folgenden Code:
Option Explicit Private Declare Function summe Lib "G:\Komprimieren\akt\C\akt\release\ShotCompLib.dll" Alias "#6" (ByVal sum1 As Long, ByVal sum2 As Long) As Long Private Sub cmdC_Click() On Error GoTo Fehlerbehandlung Call MsgBox(summe(1, 2)) ' This should report "3" Exit Sub Fehlerbehandlung: MsgBox Err.Description Exit Sub End Sub ShotComp.h: __declspec(dllexport) int _stdcall summe(int sum1, int sum2); ShotComp.cpp: int ShotComp::summe(int sum1, int sum2){ return sum1+sum2; }
Beim Aufruf dieser Zeile in VB: "Call MsgBox(summe(1, 2))" erhalte ich jedoch folgenen Fehler: Die Anweisung in "0x785..." verweist auf Speicher in "0x00...001". Der Vorgang read konnte nicht ausgeführt werden. Danach stürzt die gesamte VB-Entwicklungsumgebung ab. Weiters macht mich die Adresse "0x0..00001" etwas stutzig.
Ich bitte um eure Hilfe,
mfg
-
Lt. Doku erwartet "MsgBox" als ersten Parameter einen String. Du lieferst ihr aber einen Int (den sie fatalerweise als Stringadresse interpretiert).
-
Nein das ist es auch nicht. Wenn ich die Msg-Box weglasse und nur versuche die Funktion mit call aufzurufen passiert das selbe.
mfg
-
declarier die c-funktion als "extern C" und mach aus ShotComp::summe einfach nur 'summe'. und schau auch mal hier: http://en.wikipedia.org/wiki/Name_mangling
-
Ich habe aus ShotComp::summe nur summe gemacht und mir den Artikel auf wiki durchgelesen, der hat mich jetzt aber auch nicht unmittelbar weitergeholfen. Beim Versuche die Funktoin als extern C zu deklarieren erhalte ich folgende Fehlermeldungen in genau der Zeile:
syntax error: 'string'
unexpected token preceding ';'
syntax error: 'string'
unexpected token preceding ';'ShotComp.h: extern "C" __declspec(dllexport) int _stdcall summe(int sum1, int sum2); ShotComp.cpp: int summe(int sum1, int sum2){ return sum1+sum2; }
Ich bitte um eure Hilfe!
mfg