DLL Externes [Résolu]

Signaler
Messages postés
3
Date d'inscription
mardi 2 octobre 2007
Statut
Membre
Dernière intervention
2 octobre 2007
-
NHenry
Messages postés
14620
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
19 janvier 2020
-
Bonjour a tous,

Je travails actuellement sur un projet en VB 2005.
Ce projet est la creation d'une DLL qui elle-meme utilise des DLLs externes.
Et pour compliquer encore un peu l'histoire ... ce projet avait ete cree en.Net 2003 et est migre en .Net 2005.

La raison du passage de 2003 a 2005 est le soft (commercial) qui va utiliser cette DLL.
L'ancienne version s'appuyait sur le framework .Net de 2003, mais la nouvelle s'appuye sur 2005.
Vous suivez toujours ??

En migrant le projet, j'ai vire les references (migrees de 2003) aux DLL externes (qui proviennent du soft qui va utiliser ma DLL), et j'ai repris les references des DLL locales (celles de la nouvelle version du soft).
Apres avoir ajoute ces references, il y a des DLLs dans le repertoire .\obj\release de mon projet.

Ce qui me semble etrange, c'est que les DLLs de ce repertoire :
- N'ont pas exactement le meme nom que les DLLs originales
- N'ont ni la meme taille que la DLL originale ni la taille du tlb.

Qqun pourrait-il me dire si c'est normal et si oui, quel en est la raison ?

Merci bcp

Jemty

9 réponses

Messages postés
14620
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
19 janvier 2020
138
Bonjour

Ces DLL permettent à .NET de faire le lien entre la couche .NET et les composants COM.

Elles doivent être dans le mme dossier que l'executable.

Dans les références de ton projet, tu as toutes ou parties des DLL qui te manquent ?

Balèse la personne qui a pensé au pansement à penser (ou à panser, pensée).
VB (6, .NET1&2), C++, C#.Net1
Mon site
Messages postés
14620
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
19 janvier 2020
138
Bonjour

Exemples de nom ???

Si le nom ressemble à *.Interop.*.dll, c'est normal, .NET utilise les Interops pour accéder aux DLL COM.

Balèse la personne qui a pensé au pansement à penser (ou à panser, pensée).
VB (6, .NET1&2), C++, C#.Net1
Mon site
Messages postés
3
Date d'inscription
mardi 2 octobre 2007
Statut
Membre
Dernière intervention
2 octobre 2007

C'est bien ca oui.
Interop.[nom de la DLL].DLL

Peut-on me dire alors ce que represente cet Interop ? C'est juste un "lien" ou est-ce plus ?

J'avance un peu dans mon developpement, et je constate que je ne retrouve pas toutes les DLL externes dans l'object browser.
Chose qui a bienentendu pour consequence, que des types/classes/enums declares dans ces DLLs ne sont pas reconnues lors de la compil.
Y aurait-il une "astuce" pour que ca fonctionne "
(Il n'y avait pas le moindre souci en .Net 2003)

Merci
Messages postés
3
Date d'inscription
mardi 2 octobre 2007
Statut
Membre
Dernière intervention
2 octobre 2007

Merci pour l'info.

Concernant les classes/types/.. manquants dans l'object browser mais dont les classes etaient presentes dans les references, je n'ai plus de problemes, elles sont maintenant toutes presentes.
J'ai supprime toutes les references, les ai recreees ... et par je ne sais quel miracle, maintenant tout est la.

La question qui reste en suspend est "Qu'est-qui a change entre la premiere fois que j'ai cree les references et la seconde ? "
Messages postés
14620
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
19 janvier 2020
138
Bonjour

L'heure et la date .....
L'informatique a ses mystères.

Balèse la personne qui a pensé au pansement à penser (ou à panser, pensée).
VB (6, .NET1&2), C++, C#.Net1
Mon site
Messages postés
258
Date d'inscription
jeudi 23 octobre 2003
Statut
Membre
Dernière intervention
20 mars 2013
1
Bonjour NHenry,

J'ai a peu près le même problème sous Visual Basic 2008 Express.

J'ai une DLL externe réalisée en VB6 qui est appelée par une application sous VB 2008 Express.

En code source cela fonctionne mais dès que je passe en EXE cela ne fonctionne plus, cela m'indique un problème sur l'appel de la DLL.
    Dim MaDll
    MaDll = New MonProjet.MaClasse

Le message indique 'Retrieving the COM class factory for component with CLSID {...} failed due to the following error : 800ac352.

J'ai bien les fichiers interops.nomDLL.DLL dans le même dossier que l'EXE.
J'ai (a priori) toutes les références dans le projet.

Je ne comprends pas, aurais-tu une piste de recherche ?

Par avance merci

Olivier
Messages postés
14620
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
19 janvier 2020
138
Bonjour,

A voir ton code, tu n'as pas mis Option Strict à On.

Tu as essayer de réenregistrer (désenregistrer, puis enregistrer) ta DLL ?
Tu as essayer de refaire la dépendance de ton projet (supprimmer la référence vers la DLL puis la remettre, dans les props de ton projet) ?

Si oui pour les 2, je ne vois pas, dsl.

Mon site
Messages postés
258
Date d'inscription
jeudi 23 octobre 2003
Statut
Membre
Dernière intervention
20 mars 2013
1
En effet, je n'ai pas mis Option Strict On car j'ai des variables qui sont mixtes (texte et valeur numérique).

Réengistrer la DLL : Oui mais directement sans désinstaller, je ne me souviens plus comment on fait.

Pour la dépendance dans le projet, je l'ai enlevée et remise un certain nombre de fois et ... RIEN !
Je ne fais peut-être pas comme il faut.

Olivier
Messages postés
14620
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
19 janvier 2020
138
Bonjour,

Désinstalle le DLL et réinstalle-la.
Ensuite, refais le lien dans ton projet.

Pour tes variables mixte, utilises une autre méthode que de mettre Option Strict à Off.
Par exemple, créer une classe pour gérer cela.

Je vois mal la cause de l'erreur si ce n'est un problème d'enregistrement.

Mon site