dll(c++) in vb Aufrufen/Benutzen



  • Moin
    habe eine dll in c++ geschrieben, welche ich nun unter vb6 benutzen möchte.
    Beim Aufruf der Funktion erhalte ich den Meldung das der Einstiegspunkt nicht gefunden werden kann.
    Also hier mal der Quellcode, vielleicht sieht ja jemand den Fehler

    Dll:
    #include "stdafx.h"
    #include
    #include
    #define DLLExport _declspec(dllexport)

    DLLExport double SquareRoot(double d);

    // Ein- und Austiegspunkt für 32 Bit-DLL
    BOOL WINAPI DllMain (HANDLE hInst, ULONG ul_reason_for_call, LPVOID lpReserved)
    {
    return 1;
    }

    DLLExport double SquareRoot(double d)
    {
    if (d >= 0.0) {
    return sqrt(d);
    }
    return 0.0;
    }

    vb deklaration:
    Declare Function SquareRoot Lib "D:\VisualBasic\test2.dll" (ByVal d As Double) As Double

    vb Aufruf:
    Private Sub Command1_Click()
    Dim Wert As Double
    Wert = 0.64
    lblErgebnis = SquareRoot(Wert)
    End Sub

    Besten Dank für eure Hilfe
    jma



  • Setzt mal ein extern "C" vor die DLLExport's

    Grüße Rapha



  • hi,

    in vb wird doch immer noch beim declare dieses "alias" oder so benutzt, damit kannste den Einstiegspunkt angeben.

    z.B.

    Private Declare Function LoadLibrary Lib "kernel32" Alias "LoadLibraryA" (ByVal lpLibFileName As String) As Long
    

    Du kannst mit dem Tool "Dependency Walker" das dem Visual Studio beiliegt, sehen wie der Einstiegspunkt heißt in der Dll (der jeweiligen Funktion).


Anmelden zum Antworten