PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : C++ DLL aus VB6 aufrufen


Gast
2013-03-09, 09:58:36
Hallo,

habe testweise mal versucht eine C++ dll aufzurufen, aber kriegs irgendwie nicht hin:


C++:

#define DLLAPI __declspec(dllexport)

DLLAPI long ReturnTest(long nr)
{
nr = nr + 10;
return nr;
}

Def-File:
LIBRARY "Test_Vb6" // (name der dll)
EXPORTS
ReturnTest @1



VB:
Private Declare Function ReturnTest Lib "Test_Vb6.dll" (ByVal nr As Long)

Private Sub Command1_Click()
Dim dlgstatus As Long
Dim test As Long
MsgBox (test)
dlgstatus = ReturnTest(test)
MsgBox (dlgstatus)
End Sub


Habs auch mal mit __stdcall versucht, aber ich bekomme "Ungültige Aufrufkonvention", wenn ich meine VB6 exe ausführe.

Was mache ich falsch?

ScottManDeath
2013-03-09, 10:11:56
extern "C" vor die Signatur

Gast
2013-03-10, 17:50:17
Habs immer noch nicht hinbekommen:

VB:
Private Declare Function ReturnTest Lib "E:\VB\Test_Vb6.dll" (ByVal nr As Long)

Private Sub Command1_Click()
Dim dlgstatus As Long
Dim test As Long
MsgBox (test)
dlgstatus = ReturnTest(test)
MsgBox (dlgstatus)
End Sub




C++:


Header:
#include "windows.h"

#define DLLAPI __declspec(dllexport)

extern "C"
{
DLLAPI long _stdcall ReturnTest(long nr);
}

CPP:
#include "Header.h"

DLLAPI long _stdcall ReturnTest(long nr)
{
nr = nr + 10;

return nr;
}


Def:
LIBRARY "Test_Vb6"
EXPORTS
ReturnTest @1




Gibt zwei mal Null aus. Beim Zweiten mal sollte doch 10 aus C zurückkommen.

Wieso klappt das nicht? :o

Gast
2013-03-11, 04:19:19
Du brauchst vermutlich ein DEF file auf CPP-Seite, sonst gibt's gar keinen Export-Eintrag in der DLL.

Gast
2013-03-11, 19:07:41
Doch hab ich..