Seite 1 von 1

DLLs laden mit QLoadLibrary - Wie erhalte ich mehrere Instan

Verfasst: 11. Juli 2008 10:28
von marwar_cottbus
DLLs laden mit QLoadLibrary - Wie erhalte ich mehrere Instanzen?

Hallo!

Ich will aus mehreren QThreads eine (nicht-QT) DLL laden. Mein Problem ist, dass QLoadLibrary beim Versuch mehrere Instanzen der Funktion der DLL zu erzeugen ein und dasselbe Handle zurück gibt. Damit streiten sich meine QThreads eine halbe Ewigkeit um die DLL. Wie erzeuge ich mehrere Instanzen?

Code zum Laden bis jetzt:

Code: Alles auswählen


//headerfile der QThread-Klasse
	typedef int (*loaded_inopt_type)(DoubleTable* biobj0,DoubleTable* bimas0);
	QLibrary* inopt_q_loaded;
	loaded_inopt_type inopt_loaded;

//Konstruktor
	inopt_q_loaded= new QLibrary("INOPT.dll",this);
	inopt_loaded=(loaded_inopt_type)inopt_q_loaded->resolve("INOPT_nosave");

inopt_q_loaded hat in jedem Thread eine andere Adresse im Speicher, aber die DLL und inopt_loaded haben jeweils in jedem Thread die selbe Adresse.

Verfasst: 11. Juli 2008 10:45
von elli
es wird unter Windows immer nur eine DLL Instance geladen.
Ein 2. LoadLibrary macht nichts weiter, weil die DLL schon im
Speicher ist und gemappt ist.

Wenn Du Instancenfähig sein willst, muß die DLL API das wiederspiegeln.

elli