Hi,
ich habe ein programm mit DLLs..
Ich habe in Delphi eine
DLL geschrieben, welche eine Klasse exportiert, bzw eine funktion welche eine neue instanz der Klasse erstellt.
Das ganze sieht etwa so aus:
Delphi-Quellcode:
TDLLClass = class
public
function loadImage(filename: PChar): Longword;
end;
function createClass: TDLLClass;
begin
Result:=TDLLClass.Create;
end;
exports
createDLL;
die funktion loadImage lädt ein Bild in den speicher (Speicher wird reserviert mit GetMem) und gibt dann einen Pointer auf den Speicherbereich zurück.
Das ganze klappt wunderbar, allerdings nur solange nur ein Thread gleichzeitig läuft.
Wenn ich nun also 2 Threads gleichzeitig laufen lasse welche loadImage aufrufen, schmiert irgendwann (komischerweise nicht sofort, sondern erst nach einiger zeit) das programm ab...
Die Zeit nach der es abschmiert ist immer etwa gleich (ca~ nach 20 Bildern).
Es liegt 100%ig nicht daran das irgendwo auf gleiche variablen zugegriffen wird, denn:
Wenn ich den Code der
DLL einfach in das Hauptprogramm kopiere und so den
DLL aufruf umgehe, funktioniert es selbst mit 10 Threads fehlerfrei.
Auch wenn ich für jeden Thread eine neue klasse der
DLL erstelle funktioniert es nicht... es muß also irgendwo an der schnittstelle zwischen Programm/
DLL liegen.
Hat da jemand eine Idee?
Au'revoir,
Aya~