String Ausgabe einer Delphi DLL



  • Hallo an alle im Forum

    ich habe ein kleines Problem mit der Ausgabe eines Strings vom Typ PChar
    und zwar habe ich mit delphi eine kleine DLL geschrieben die mir einen String vom Typ PChar ausgibt.

    Mit Delphi funktioniert es einwandfrei doch mit dem BCB hab ich so meine Schwierigkeiten.

    Hier gibt er mir eine Reihe unbekannter Zeichen aus warum ??

    QuellCode

    void __stdcall Test(){
    
    TTest * pTest = 0;
    
    HINSTANCE h = LoadLibrary("Test.dll");
    if(h)
    {
      pTest = (TTest*)GetProcAddress(h, "VName");
      if(pTest)
      {
      Form1->ListBox1->Items->Add(PChar(pTest));
    
      }
      FreeLibrary(h);
    }
    
    }
    

    und im Header

    typedef void (__stdcall *TTest)();
    

    wer kann mir ein paar Tips geben , bin schon langsam am verzweifeln 😞

    Bin über jeden Tip dankbar

    Daniel



  • Hallo

    Was erwartest du denn?
    - Du definierst einen Funktionspointer der a. keinen Rückgabewert hat und b. keinen Parameter besitzt. Wo soll da eine Zeichenkette herkommen?
    - Du lädst aus der Datei eine Funktion aber anstatt die (immer noch nichts zurückgebende) Funktion aufzurufen willst du die Adresse dieser Funktion als eine Zeichenkette an den AnsiString-Konstruktor übergeben.
    Da brauchst du dich nicht zu wundern wenn du nur Unsinn rausbekommst.

    Ich weiß jetzt nicht ob und wie globale exportierte Variablen aus DLLs geladen werden können. Aber vermutlich wäre es viel einfacher und sinnvoller anstelle der exportierten Variable eine eigene Funktion zu exportieren, die nichts weiter macht als die interne Variable zurückzugeben. Und schon kannst du wie gewohnt eine Funktion laden und bekommst mit dem Aufruf einen sinnvollen Wert.

    bis bald
    akari


Anmelden zum Antworten