Pendant que je réalise le développement VB6, je pense que c'est un problème plus large. J'ai trouvé que parfois dans l'IDE VB nous obtenons une erreur: [BadImplementsRefInCompatLib]. À l'aide de la visionneuse de bibliothèque de types fournie avec «Advanced Visual Basic 6» par Matt Curland, elle indique que la bibliothèque de types de mon composant contient une référence à une bibliothèque de types introuvable, mais pas ce qu'elle est. L'erreur sous-jacente est avec le composant TLI lorsqu'il essaie de trouver une interface qui est définie dans une autre bibliothèque de types.Références de bibliothèque de type externe non valides ("Erreur lors du chargement de la DLL")
J'ai également essayé OLE View - pour essayer de recompiler l'IDL - mais encore une fois, il a donné un message d'erreur en essayant d'obtenir le type externe, sans identifier la valeur erronée.
J'ai renvoyé l'erreur proprement dite à la référence de la bibliothèque de types dans le registre, pointant vers un composant, mais la version majeure était incorrecte. Le remplacement de la version majeure a corrigé le problème. J'ai utilisé un éditeur binaire pour voir si je pouvais voir quelles informations sont utilisées dans la bibliothèque de types. Et en effet, j'ai trouvé les noms (pas de chemins) des composants auxquels elle fait référence, mais je n'ai pas pu trouver le format. En fait, j'espérais trouver une table de GUID de bibliothèque de types et de numéros de version. Je suppose que je pourrais écrire du code pour extraire ces noms, et éliminer les références «de travail», mais c'est un peu grossier.
Est-ce que quelqu'un sait comment une bibliothèque de types référence des types externes?
Les bibliothèques de types ont un numéro de version pour une bonne raison. Vous pouvez modifier ce problème, mais cela génère simplement une erreur non détectable à l'exécution lorsque vous appelez une procédure qui a été modifiée. Le seul moyen d'obtenir et d'enregistrer la bibliothèque de types correcte est la solution. –
@HansPassant - Je comprends parfaitement le point de la version de la bibliothèque de types.Malheureusement, le comportement du composant TLI n'est pas très utile - il génère une erreur sans fournir une certaine forme d'information sur * pourquoi * il n'a pas pu résoudre la référence afin que je puisse prendre les mesures appropriées. En ce moment, je dois deviner pourquoi ça n'a pas marché! –