ich bin in meiner Anwendung (Qt 4.7.4, Windows 7) auf ein Problem gestoßen, dass ich mir nicht erklären kann.
Im Hauptthread binde ich dynamisch eine DLL über LoadLibrary() ein. Das zurückgegebene Handle verwende ich, um Funktionszeiger mit GetProcAdress() auf die jeweilige Adresse der DLL-Funktion zeigen zu lassen. Dann erzeuge ich 4 Threads, in denen die Funktionen der DLL verwendet werden. Alles funktioniert prima mit der Debug-Buildkonfiguration!
Wechsle ich auf die Release-Buildkonfiguration, crasht die Anwendung, wenn die 4 Threads "gleichzeitig" ausgeführt werden und die DLL-Funktionen verwenden (Fehlercode 0xc0000005, unerlaubter Speicherzugriff) Füge ich aber vor jeden Funktionsaufruf eine qDebug() << "irgendwas" Zeile ein, funktioniert alles!!!
Was kann da schief laufen? Scheinbar bringt Qt mit QLibrary selbst eine Klasse zum Einbinden von DLLs mit, diese habe ich aber noch nicht getestet.
PS: Auf Quellcode habe ich vorerst verzichtet, da es mit einer anderen Build-Konfiguration (scheinbar) problemlos funktioniert.