C++ Dll in VB.NET aufrufen

  • C++

Es gibt 1 Antwort in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    C++ Dll in VB.NET aufrufen

    Hallo zusammen,

    ich bin aktuell dabei eine C++ Dll aus VB.NET aufzurufen und bin bei den Übergabeparametern etwas am verzweifeln. Ich hoffe ihr könnt mir hier auf die Sprünge helfen.


    Hier ist ein Ausschnitt aus der C++ Dll (Etwas abgewandelt)


    C-Quellcode

    1. TEST_API void TESTGetAPI(
    2. /*in*/ short int error,
    3. /*in*/ short int lang,
    4. /*out*/ unsigned char Description[100])
    5. {
    6. ...


    Dieser Funktion wird ein Errorcode mit Languageinformation übergeben. Zurück bekomme ich den Fehlercode.


    Hier ist der VB.NET aufruf dazu.

    VB.NET-Quellcode

    1. <DllImport("TestC.dll", CallingConvention:=CallingConvention.Cdecl, EntryPoint:="TESTGetAPI", CharSet:=CharSet.Ansi)>
    2. Private Shared Sub TESTGetAPI(ByVal error As Integer, ByVal lang As Integer, ByRef Description As IntPtr)
    3. End Sub



    Und der Funktionsaufruf

    VB.NET-Quellcode

    1. ....
    2. Dim ttt As IntPtr = Marshal.AllocHGlobal(100)
    3. TESTGetAPI(-1000, 1, ttt)


    Ich habe hier schon einige verschiedene Varianten ausprobiert. Pointer, String, Byte-Array... Leider ohne Erfolg.
    Leider sind meine Kenntnisse in C eher schlecht.
    Bei allen Varianten bekomme ich entweder einen Fehler direkt in der DLL oder beim späteren Auslesen des Pointers.

    Könnt ihr mir sagen, was das Äquivalent zu folgendem Parameter ist bzw. wie ich den auslesen kann.

    /*out*/ unsigned char Description[100]

    Noch als Info, die C++ DLL kann nicht geändert werden.

    Vielen Dank schon Mal im Voraus für eure Hilfe.

    Gruß
    Niely
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!