J'utilise le contrôle de capture vidéo LeadTools Multimedia, qui apparaît sous le type AxltmmCaptureCtrl
. Dans mon code, j'ai la ligne suivante:La propriété Control est acceptée par le compilateur, provoque une erreur d'exécution "n'existe pas" dans UserControl - mais fonctionne correctement à l'exécution
AxltmmCaptureCtrl1.VideoWindowSizeMode = LTMMLib.ltmmSizeMode.ltmmFit;
qui compile très bien, sans plaintes ou même les avertissements du compilateur. Mais quand j'utilise la chose à l'exécution, j'obtiens l'erreur suivante:
Method not found: 'Void AxLTMMLib.AxltmmCaptureCtrl.set_VideoWindowSizeMode(LTMMLib.ltmmSizeMode)'.
WTF ?! Intellisense reprend la méthode, et le compilateur lui convient parfaitement - mais dans runtime il décide soudainement que la méthode n'existe pas?
Il existe d'autres propriétés (pas toutes) présentant un comportement similaire. Cela ne semble pas discriminer les setters et les getters.
Des idées?
EDIT: ... plus curieux, il semble que le problème ne se produit que dans l'exécution d'un UserControl, à savoir en mode conception. J'ai mis ce contrôle LeadTools dans mon propre UserControl, et quand je mets ce contrôle sur un autre formulaire, j'obtiens cette erreur "Method not found". Mais quand c'est en runtime ("real" runtime, c'est-à-dire, pas runtime UserControl), le code fonctionne parfaitement! Comme c'est bizarre?
Comment êtes-vous sûr qu'il utilise la même DLL sous-jacente dans ces deux cas? COM peut être très particulier quand il s'agit de résolution dll. Surtout si vous déployez la DLL dans votre application mais que celle-ci (ou une * version * différente) est également enregistrée localement. –
@Marc - il ne m'est même pas venu à l'esprit que cela pouvait faire référence à 2 DLL différentes. Comment pourrais-je vérifier cela? –
pour être honnête, je suis rouillé; Je n'ai pas beaucoup touché COM depuis des années - je ne peux pas donner une réponse décente à cela. –