Einzelnen Beitrag anzeigen

Rociel

Registriert seit: 13. Feb 2005
Ort: Könnern/MD
107 Beiträge
 
Delphi 2006 Personal
 
#1

Prozedureinsprungpunkt beim statischen Einbinden n. gefunden

  Alt 21. Mai 2008, 20:47
Nabend liebe DP'ler

ich programmiere gerade wieder in bisschen an meinem DS-Tool weiter, und habe mir gearde zur Aufgabe gemacht, das programm etwas dynamischer zu gestalten. Dadurch kann ich später das Programm dann leichter aktualisieren wenn bei DieStämme neue Server hinzukommen, bzw. neue Länder.

So, nun gut zuerst habe ich folgendes versucht:

in der dll:
Delphi-Quellcode:
function myDSID:PChar;stdcall;
...
begin
...
end;

exports
  myDSID;
und in der exe:
Delphi-Quellcode:
implementation

...

function myDSID:PChar; stdcall;
external 'func.dll';

{$R *.dfm}
das klappt auch wunderbar, so nun will ich in der dll noch mehr Funktionen unterbringen, was dann knapp so aussieht:
Delphi-Quellcode:
function myDSID:PChar;stdcall;
...
begin
...
end;

function myLaender:Byte;stdcall;
begin
...
end;

function myLand(i:byte):PChar;stdcall;
begin
...
end;

exports
  myDSID,
  myLaender,
  myLand;
und in der exe:
Delphi-Quellcode:
implementation
...

function myDSID:PChar; stdcall;
external;
function myLaender:Byte; stdcall;
external;
function myLand(i:byte):PChar; stdcall;
external;

{$R *.dfm}
nun mag ich die exe ausführen, und Delphi bleibt bei einem CPU-Fenster hängen, ich lass das Programm weiterlaufen und bekam ne Accessviolation, mit der ich nix anfangen konnte, später habe ich das Programm dann außerhalb von Delphi nochmal aufgerufen, und da kam dann die Fehlermeldung ala "Prozedureinsprungpunkt für Funktion myLand nicht gefunden"

naja dann habe ich noch folgendes ausprobiert(zuerst mit den Indizes dann mit name):

im exports Teil der DLL:
Delphi-Quellcode:
exports
  myDSID index 1 name 'myDSID',
  myLaender index 2 name 'myLaender',
  myLand index 3 name 'myLand';
und in der exe entsprechend

Delphi-Quellcode:
function myDSID:PChar; stdcall;
external 'func.dllindex 1 name 'myDSID';
function myLaender:Byte; stdcall;
external 'func.dllindex 2 name 'myLaender';
function myLand(i:byte):PChar; stdcall;
external 'func.dllindex 3 name 'myLand';
ich weiß langsam nicht mehr weiter... wäre nett, wenn mich jemand mal mit nem Zaunpfahl auf meinen Fehler verweisen könnte

zumal es ja am Anfang schon ging...

vielen Dank schon mal im Vorraus =)

lg Rociel
Kommt ein Nullvektor zum Psychiater: "Herr Doktor, Herr Doktor ich bin so orientierunglos."
Mitglied der anonymen Algebraabhängigen
  Mit Zitat antworten Zitat