2009-07-13 5 views
4

J'ai essayé de charger un fichier OCX dans un de mes projets VB6 pendant la majeure partie de la journée. J'ai essayé de vérifier l'enregistrement de COM dans le registre le meilleur que je sais, et j'ai essayé plusieurs fois en utilisant REGSVR32 sur le fichier en vain. Tout ce que je reçois de VB6 quand j'essaye de charger le composant (Sous Projet -> Composants) est 'FilePath \ FileName.ocx' n'a pas pu être chargé. Quelqu'un d'autre a-t-il déjà vu cela, et si oui, des idées pour y remédier?Erreur VB6 - Impossible de charger le fichier .ocx

Répondre

2

Cela peut être un problème de dépendance - un autre composant requis par l'OCX n'est pas présent. Dependency Walker trouvera toutes les dépendances statiques.

+0

Effectivement, cela s'est avéré être un problème de dépendance. Cela fait un moment que je me suis battu avec celui-ci, complètement oublié que j'avais demandé à ce sujet. –

3

Juste quelques conseils pour vous aider à isoler le problème ....

Regardez le contrôle avec OleView

Examiner le nom: si elle est l'un des mots réservés tels que « Menu », vb6 ne parviendra pas à le charger. (Bien que vb6 vous permette de créer (et d'utiliser) avec un mauvais nom jusqu'à ce qu'il soit sauvegardé et rechargé)

Examinez l'interface: décrit-elle la fonctionnalité? Vous pouvez avoir un ocx endommagé ou non autorisé.

Essayez de le charger avec le conteneur de test ActiveX Control ... Si vous le pouvez, le problème se situe au niveau de VB6 et non de l'ocx.

+0

En OleView Fichier-> Voir Typelib sur le OCX et notez les lignes de importlib. Par exemple importlib ("oleguids3.tlb"); signifie que cette tlb est nécessaire pour être enregistré sur la machine dev avant de référencer l'OCX. La raison en est que si une bibliothèque est référencée par les interfaces [externes] de l'OCX, elle doit être enregistrée sur la machine de développement ou l'OCX est inutilisable dans l'EDI. – wqw

0

Lorsque vous dites que vous avez utilisé "REGSVR32 sur le fichier en vain" voulez-vous dire que vous obtenez un nom de fichier a réussi un message, ou un message d'erreur? Si l'enregistrement du fichier réussit, CMB a probablement raison sur le fait que l'ocx n'est pas autorisé.

0

Licence mise à part, il y a quelques autres points de déclenchement avec vb6. Surtout si l'OCX a été développé en VB6. Si tel est le cas, la version enregistrée du système «officiellement» peut entrer en conflit avec l'ocx spécifique que vous utilisez. En d'autres termes, les deux peuvent avoir le même nom propre (ou classid) mais celui que vous essayez d'utiliser peut ne pas implémenter toutes les fonctionnalités décrites dans le système enregistré (c'est-à-dire que vous avez une version moins évoluée). Cela se produit lorsque l'auteur souhaite maintenir la compatibilité binaire tout en améliorant la fonctionnalité d'un contrôle. Tant que les interfaces publiques restent compatibles, vb ne recalculera pas le classid.

Vous pouvez résoudre ce problème en désenregistrant de force le contrôle spécifique (en fait, désenregistrez toutes les instances du contrôle). (regsvr32/u control.ocx) Ensuite, ré-enregistrer celui que vous avez l'intention d'utiliser. Assurez-vous qu'il n'existe aucune instance de VB6 en cours d'exécution ou que les résultats risquent de ne pas fonctionner. (Vérifiez votre liste des tâches)

espoir qui aide ...

0

Le contrôle peut être dépendante d'une autre DLL ou OCX qui peut être manquant ou non enregistré et ce pourrait manifeste lui-même comme VB rapports que le contrôle vous essayez d'utiliser est manquant. Cependant, je ne suis pas sûr de la façon dont vous identifieriez les dépendances. Autant que je sache, le dépendant de la dépendance identifie les dépendances statiques; Je ne suis pas sûr si elle peut identifier les dépendances COM.

2

Nous avons récemment corrigé une erreur similaire. Dans notre cas, l'erreur était dans le fichier de projet Visual Basic (.vbp). Le fichier de projet avait été modifié en dehors de la machine de construction standardisée et contenait des références aux composants OCX - y compris les chemins spécifiques au poste de travail & versions des composants.

Vous pouvez modifier le fichier du projet dans l'éditeur de texte ou obtenir une version de travail à partir du contrôle de version.

0

Un registre le Ocx re enregistrer l'ocx puis chargé le projet à nouveau dans VB6, cela a fonctionné pour moi.

Merci à tous

0

La désinscription et l'enregistrement ont de nouveau fonctionné pour moi aussi.
S'il vous plaît noter que vous devez enregistrer ce composant en utilisant cette syntaxe:

regsvr32 /i:design olch2x8.ocx 
Questions connexes