Announcement

Collapse
No announcement yet.

Leere Funktion in DLL verändert Daten

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Leere Funktion in DLL verändert Daten

    Hallo an alle,

    um eine DLL zu entwickeln/testen habe ich in CBuilder 5 eine Projektgruppe angelegt. Die DLL entwickel ich in C, das Testprogramm in C++.
    Die Funktion in der DLL erwartet einen char* als Parameter. Sie enthält keine einzige Zeile Code (siehe unten)
    Das Testprogramm initialisiert den String mit "GehtNix".
    Nach dem ersten DLL-Aufruf steht immer noch "GehtNix" drin.
    Nach dem zweiten DLL-Ausruf steht "ä§\x12\0Nix" drin.
    Die ersten 4 Byte wurden also geändert.
    Nach dem dritten DLL-Aufruf stürzt das Programm ab (Access Violation).
    Es scheint auf dem Stack was schiefzulaufen, aber die Parameter stimmen meiner Meinung nach überein.

    Hier die DLL:

    __declspec (dllexport) __stdcall unsigned short MyFunc(char *StringBuffer)
    {
    }

    Hier das Testprogramm:

    typedef unsigned short (*tMyFunc)(char *Name);
    HINSTANCE Handle;
    tMyFunc fMyFunc;
    char buffer[10] = "GehtNix";
    Handle = LoadLibrary("mydll.dll");
    fMyFunc = (tMyFunc)GetProcAddress(Handle, "MyFunc");
    fMyFunc(buffer);
    fMyFunc(buffer);
    fMyFunc(buffer);
    FreeLibrary(Handle);

    Könnt ihr mir bitte helfen?
    Gruss Tobias

  • #2
    Versuch mal tMyFunc *fMyFunc
    Günther

    Comment

    Working...
    X