![]() |
Datenbank: MySQL • Version: 5.0 • Zugriff über: mysql.pas - libmysql.dll
Fehler nach freigeben von DLL
Hi DPler
Ich kämpfe gerade mit einem schwierigen Problem: Meine Programmstruktur: Exe -> Datenbank.dll -> libmysql.dll -> MySQL Datenbank Jetzt hab ich das Problem das wenn ich eine Abfrage durchführe und dann danach das Programm beende dann bekomm ich eine AV und danach einen Runtime Error. :wall: So wenn ich keine Abfrage durchführe dann kommt beim beenden kein fehler. Und der Fehler kommt auch nur wenn ich die Datenbank.dll beim beenden freigebe. Die Datenbank.dll kann die libmysql.dll aber ohne probleme freigeben nur die exe darf die datenbank.dll nicht freigeben So jetzt hab ich natürlich debuggt und aber leider ziemlich erfolglos da der fehler erst nach dem Appliaction.Run; auftritt und ich somit nicht wirklich debuggen kann. Die Datenbank.dll kann ich auch nicht debuggen weil diese zu dem Zeitpunkt nichts tut. Ich bin mir ganz sicher das auf die DLL nach dem freigeben NICHT mehr zugegriffen wird. Habt ihr eine Idee bei diesem Merkwürdigen Problem? Liegt es vllt. an der libmysql? |
Re: Fehler nach freigeben von DLL
Gibst du die Queries wieder frei?
|
Re: Fehler nach freigeben von DLL
jo zuerst
mysql_real_query dann hol ich mir die ganzen daten und dann mysql_free_result |
Re: Fehler nach freigeben von DLL
*push* :duck:
|
Re: Fehler nach freigeben von DLL
*push²*
|
Re: Fehler nach freigeben von DLL
sieht für mich so aus als ob bei der Communikation mit deiner DLL der Speicher etwas "verwurschtelt" wird und dann kracht es später wenn versucht wird ordentlich frei zu geben (sozusagen ein Folgefehler). Aber ohne Quelltexte ist das nur Vermutung. Kommt der Fehler auch wenn du in deiner Datenbank.dll nicht auf mysql sachen zugreifst?
|
Re: Fehler nach freigeben von DLL
Zitat:
//edit: ich hab jetzt des auch getestet ob das handle und der proedure einsprungspunkt sich während des programmes geändert hat ... aber das handle und die porcedure adresse ist genau die gleiche wie am ende (wo des dann freigegeben wird) vom programm. |
Re: Fehler nach freigeben von DLL
Hatte heute auch ein ähnliches Problem, bei mir war die Lösung, dass ich einfach vergessen hatte einen Memory Manager anzugeben.
Weiss nicht ob dich das jetzt weiter bringt. |
Re: Fehler nach freigeben von DLL
Wenn Du von der exe zur dll oder andersrum Strings weitergibst, dann musst du den sharemem einbinden in beide dpr-files. Wichtig ist, dass dies bei den uses an erster Stelle steht.
Oder Du verwendest nur ShortStrings (z.B. str[50]). Siehe auch die verschiedenen DLL-Tutorials. Mindestens eines findest Du hier in der DelphiPraxis. |
Re: Fehler nach freigeben von DLL
Zitat:
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:29 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