Je tente de créer une DLL contenant un module de données VCL. L'idée est que diverses applications peuvent toutes charger la même DLL et utiliser le même code de base de données.C++ Builder XE2: initialisation d'un module de données dans une DLL
Le module de données lui-même est testé dans le cadre d'une application - J'ai copié le formulaire sur mon projet dll.
Ainsi, dans la méthode du point d'entrée de dll, je dois initialiser le module de données:
int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void* lpReserved)
{
//if I don't call this, I get an exception on initializing the data module
CoInitialize(NULL);
//initialize a standard VCL form; seems to works fine
//I'm not using Application->CreateForm as I don't want the form to appear straight away
if(!MyForm) MyForm = new TMyForm(Application);
//this doesn't work - the thread seems to hang in the TDataModule base constructor?
//I've also tried Application->CreateForm; same result
if(!MyDataModule) MyDataModule = new TMyDataModule(Application);
}
J'ai aussi vu quelque chose sur la façon dont je dois appeler Application-> Initialiser avant de créer la forme, mais ce doesn ne semble pas faire la différence.
Des idées?
Merci
Cela peut ne pas être pertinent: je peux initialiser un module de données vide sans problème. Mon module de données réel contient un ADOConnection et un ADOQuery - dès que j'ajoute ceux-ci le problème commence – user1898153
J'ai eu le même problème lors de l'utilisation de composants ADO dans les threads. Il a fallu que CoInitialize soit appelé. Je ne sais pas si cela aiderait dans votre cas, mais essayez .. – Tracer