Hallo,
ich habe nun den zweiten Anlauf hinter mir in meinem Monsterprogramm mit
Indy Mails via
SMTP zu senden.
Zuerst mal: "Stand alone", also in einer einfachen Anwendung mit den Komponenten TIdSMTP und TIdMessage läuft es (=
Indy als solches scheint erst mal richtig Installiert und die Komponenten ordnungsgemäß zu verwenden zu sein).
Nun habe ich aber ein großes Programm. Es wird vom Anwender ein Exe-File gestartet und dieser lädt je nach angewähltem Menüpunkt die eine oder andere
DLL nach. (Das funktioniert seit Jahren alles hervorragend!). Diese DLLs benutzen wiederum eine selbst geschriebene Komponente als Pool für alle möglichen Methoden und Informationen. Jetzt wollte ich das Versenden von E-Mails auch mit dieser Komponente durchführen. Leider funktionierte dies zuerst mit der 14er Version von
Indy nicht und auch mit der 9.0.18 nicht.
Das Problem stellt sich so dar, dass sich das ganze Programm aufhängt sobald die zweite
Dll vom Exe-File gestartet wird. Nach Debug -Versuchen habe ich herausgefunden, dass noch nicht mal der DllEntryPoint der zweiten
DLL durchlaufen wird.
Das Kuriose ist, dass es alleine reicht, wenn
TIdSMTP *l_MailProtokoll = NULL;
im Code meiner Komponente auftaucht und weiter nichts damit gemacht wird, damit sich das Programm aufhängt. Der Code wird nie ausgeführt (ist aber vom Compiler fehlerfrei übersetzt und auch Bestandteil der
BPL und auch nicht vom Compiler raus-optimiert).
Lasse ich die Zeile weg (!) so läuft es Fehlerfrei.
Gibt es Probleme mit der
Indy-Bibliothek wenn diese in
BPL s also von anderen Komponenten verwendet wird, und diese dann noch ausgerechnet von DLLs verwendet werden?
Hier noch mal die Zusammensetzung meiner
BPL zur Info:
Delphi-Quellcode:
USERES("BHSBasicsPPS.res");
USEPACKAGE("vcl50.bpi");
USEUNIT("BHSBasics.cpp");
USELIB("..\..\..\apcv\ApplicationInterface.lib");
USEUNIT("basConstDef.cpp");
USEPACKAGE("Vcldb50.bpi");
USEPACKAGE("vclado50.bpi");
USELIB("C:\Programme\Borland\CBuilder5\Lib\
PSDK\mapi32.lib");
USEPACKAGE("JvCoreC5R.bpi");
USEPACKAGE("Indy50.bpi");