J'ai un ensemble de bibliothèques écrites en Delphi.NET (.NET 1.1) que je veux utiliser dans mon application Win32 (Delphi). Pour les problèmes de performance, j'ai décidé de suivre la route COM.L'utilisation de classes .Net via COM Objets dans Delphi se bloque parfois
Parfois, après la reconstruction de la DLL, lorsque j'essaie d'instancier les objets exposés via COM, l'application Win32 se bloque à l'appel CreateComObject
. Comment puis-je résoudre ce problème?
Pour exposer les bibliothèques Delphi.NET par COM, ajouter les attributs suivants au-dessus de chaque décélération de la classe:
[Comvisible(true)]
[Guid('some guid')]
[ClassInterface(ClassInterfaceType.AutoDual)]
Après avoir compilé la DLL, je produis un fichier TLB.pas
, ce fichier contient des définitions pour tous les publics et COM classes visibles et interfaces dans la DLL. Ce fichier me permet d'utiliser plus facilement les objets COM dans mon application Delphi Win32. Enfin, j'inscris le .dll
et le flip .tlb
en utilisant regasm
.
J'ai essayé de vous désinscrire et d'exécuter l'application Win32, qui fait référence à la DLL; Je m'attendais à recevoir une erreur d'exécution, mais l'application a encore une fois accroché à l'appel CreateComObject()
.
J'ai également essayé de désinscrire et d'enregistrer la DLL sans aucun problème.
p.s. J'utilise BDS 2006
Il se bloque tout simplement pas CPU ? Pas d'erreur? Ne retourne jamais? –
oui, il ne revient jamais de l'appel, aussi l'utilisation du processeur n'est pas ancrée –
est-il arrivé dans d'autres langages? C++ OU VB/VBScript? – Baget