Problème avec la dll OPCDAAuto.dll

Signaler
Messages postés
132
Date d'inscription
dimanche 15 février 2004
Statut
Membre
Dernière intervention
9 mai 2017
-
 Utilisateur anonyme -
Bonjour à tous,

J'ai trouvé sur pas mal de post des liens concernant des téléchargements d'appli fonctionnant en vb.net utilisant l'OPC.

Justement, cela fait tout mon bonheur car je dois lire des variables automates sur des séries Premium (Schneider).

Mon soucis, c'est qu'ils utilisent tous une dll nommé "OPCDAAuto.dll", quand j'ajoute celle-ci dans les référence de vb.net version 2008 tout ce passe. Hors lorsque je veux exploiter les fonctions qui sont proposées j'ai le message d'erreur suivant :

"Impossible de charger le fichier ou l'assembly 'Interop.OPCAutomation, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' ou une de ses dépendances. Le fichier spécifié est introuvable."

Je suis bloqué sur ce problème et je souhaiterai trouvé une solution, je m'en réfère donc à vous tous.

Merci d'avance.

Johann36

8 réponses

Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
40
Vérifie la doc mais le message est clair, "Le fichier spécifié est introuvable"

Alors il ne s'agit peut-être pas de ce fichier dll mais d'un autre fichier que cette dll utilise.

Quand j'avais utiliser les serveurs OPC, il y a quelques années maintenant, il y avait une partie "client OPC" à installer sur le poste, cela ne se résumé pas seulement à la dll que l'on intégrait au projet (en VB6 à l'époque).
C'est peut-être toujours le même principe



[i][b]---- Sevyc64 (alias Casy) ----
[hr]# LE PARTAGE EST NOTRE FORCE #/b/i

bonjour,
a quel emplacement as-tu mis cette dll ?
et as-tu rajouté
Imports nomdll

dans une des entetes de tes classes ?
Messages postés
132
Date d'inscription
dimanche 15 février 2004
Statut
Membre
Dernière intervention
9 mai 2017

Tout d'abords merci pour vos réponses,

Casy :
Quand tu parles d'installer la partie, tu trouves ça où ? Car moi à part utiliser la dll je n'ai fait rien d'autres.

Banana32 :
L'import je l'utilise dans l'entête de ma classe principale (voir ci-dessous).

Imports OPCAutomation
Public Class Form1
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        ' Déclaration de l'objet serveur OPC
        Dim SrvOPC = New OPCAutomation.OPCServer

        '
        SrvOPC.Connect("FILTRE45", "")
    End Sub
End Class
Messages postés
2814
Date d'inscription
mardi 15 avril 2003
Statut
Membre
Dernière intervention
2 juin 2020
37
Salut,

Le composant que tu utilises est un composant COM (ActiveX), pour être exploité en .Net, il doit disposer d'une architecture semblable à toutes classes .Net, ce qui n'est pas la cas. Voila pourquoi lors de l'ajout d'un composant COM en .Net, Visual Studio crée un Composant intermédiare Interop.Toncomposant.dll permettant l'interopérabilité avec celui-ci.

Tu passes donc par Interop.OPCDAAuto.dll pour agir au sein de ton code behind mais celle-ci requière l'installation et l'enregistrement du coposant COM qu'elle utilise dans l'environnement ou elle est exécuté (c'est pour cela que tu n'as pas d'erreur dans l'éditeur lui même).

Tu dois donc placer "OPCDAAuto.dll" (pas l'interop) dans ton système (préférable), et enregistrer celle-ci dans le registre de windows via "regsvr32.exe OPCDAAuto.dll"

ATTENTION: pour les OS 64Bits c'est :

"x:\Windows\SysWow64\regsvr32.exe OPCDAAuto.dll"

x étant la lettre du lecteur système vous l'aurez compris ;O)

Ne pas oublier de définir l'architecture x86 uniquement dans les options de compile du projet.

Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer.
Messages postés
132
Date d'inscription
dimanche 15 février 2004
Statut
Membre
Dernière intervention
9 mai 2017

Bonjour Mayzz,

Merci pour ta réponse et tes précieuses explications, cependant j'ai un petit soucis avec regsvr32.exe.
J'ai fait comme tu l'as écrit dans ton post (enfin du moins je pense), j'ai ouvert l'invite de commande DOS, saisie la ligne de commande suivante :

"C:\Windows\System32\regsvr32.exe OPCDAAuto.dll" et il m'indique le message d'erreur suivant :
"C:\Windows\System32\regsvr32.exe OPCDAAuto.dll"' n'est pas reconnu en tant que commande interne ou externe, un programme exécutable ou un fichier de commandes.

Tu as indiqué qu'il ne fallait pas utiliser la dll "Interop.OPCDAAuto.dll", j'ai donc saisie la dll "OPCDAAuto.dll".

Petite info :
- La DLL Interop.OPCAutomation.dll a une taille de 36 Ko.
- La DLL OPCDAAuto.dll a une taille de 228 Ko.
Les DLL je les ai récupéré dans le source qui a été déposé "jjmaster" au lien suivant : Tapez le texte de l'url ici.

C'est quoi la différence mise à part la taille ?

Merci d'avance
Messages postés
2814
Date d'inscription
mardi 15 avril 2003
Statut
Membre
Dernière intervention
2 juin 2020
37
recommence sans les ""

Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer.
Messages postés
132
Date d'inscription
dimanche 15 février 2004
Statut
Membre
Dernière intervention
9 mai 2017

Ok ! Super ! Mayzz, j'ai réussi à le déclarer dans la base de registre.

Dans l'invite de commande DOS j'ai saisie la ligne de commande suivante :

regsvr32 "C:\OPCDAAuto.dll"

Cela a fonctionné à merveille maintenant j'essaierai demain pour voir si je peux lire une variable automate, je tiens informé.
En tout cas merci de ton aide.

@+

Johann36

Merci Mayzz,
Ceci va bien me servir aussi