AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Call einer DLL von einem Delphi Prg

Ein Thema von wschrabi · begonnen am 11. Apr 2017 · letzter Beitrag vom 12. Apr 2017
 
wschrabi

Registriert seit: 16. Jan 2005
456 Beiträge
 
#1

Call einer DLL von einem Delphi Prg

  Alt 11. Apr 2017, 21:50
Hallo Leute,
also ich hab die DLL dyn. gelanden und die SUMME von 1+2+3 klappt auch mit Rückgabewert int.
Doch wenn ich char* zurückgeben will kommt nur nix.

Kann mir da wer sagen, wieso? Ich dachte bei dyn. laden der dll braucht man auf den MemMGR nicht achten?

DANKE für jeden TIPP.

Habe nun das folgende probiert:
Delphi-Quellcode:
procedure TForm2.LadeDLL(Sender: TObject);
begin
  hmod := LoadLibrary('QMC_DLL.dll');
  if (hmod <> 0) then begin
    calcmain := GetProcAddress(hmod, 'calcmain');
    if (@calcmain <> nil) then begin
      ShowMessage('calmain geladen');
    end
    else
      ShowMessage('GetProcAddress failed');
    getttterms := GetProcAddress(hmod, 'getttterms');
    if (@calcmain <> nil) then begin
      ShowMessage('getttterms geladen');
    end
    else
      ShowMessage('GetProcAddress failed');
    calcsum := GetProcAddress(hmod, 'calcsum');
    if (@calcsum <> nil) then begin
      ShowMessage(Format('Calcsum geladen: UND TEST: SUM(1,2,3) = %d',[calcsum(1,2,3)]));
    end
    else
      ShowMessage('GetProcAddress failed');
    dummycdecl := GetProcAddress(hmod, 'dummycdecl');
    if (@dummycdecl <> nil) then begin
      ShowMessage(Format('dummycdecl geladen: UND Return; = %c',[dummycdecl('3')]));
    end
    else
      ShowMessage('GetProcAddress failed');
    dummystdcall := GetProcAddress(hmod, 'dummystdcall');
    if (@dummystdcall <> nil) then begin
      ShowMessage(Format('dummystdcall geladen: UND Return; = %c',[dummystdcall('3')]));
    end
    else
      ShowMessage('GetProcAddress failed');
      
      
  end
  else
    ShowMessage('LoadLibrary Failed!');
end;
die ersten beiden werden geladen bzw die Summe angezeigt. aber die letzten beiden klappen nicht
mehr - da kommt GetProcAddress failed'.

Mein DLL:

Code:
char __declspec(dllexport) __stdcall dummystdcalll(char* inpvec)
{
return inpvec[0]; //resultbuff;

}

char __declspec(dllexport) __cdecl dummycdecl(char* inpvec)
{
return inpvec[0]; //resultbuff;

}
Wer weiß Rat?
DANKE
Angehängte Dateien
Dateityp: zip dll_QMC.zip (67,4 KB, 5x aufgerufen)

Geändert von wschrabi (11. Apr 2017 um 22:27 Uhr)
  Mit Zitat antworten Zitat
 

 

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:45 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz