Importer DLL VB dans du C#

cs_blat Messages postés 102 Date d'inscription lundi 23 décembre 2002 Statut Membre Dernière intervention 5 juin 2007 - 23 janv. 2007 à 16:05
krimog Messages postés 1860 Date d'inscription lundi 28 novembre 2005 Statut Membre Dernière intervention 14 février 2015 - 23 nov. 2009 à 09:50
Hello :)

Tout d'abord je tiens à m'excuser au cas où ma question ne serait pas posée au bon endroit, j'ai pas trouvé où la mettre...

Voila mon problème. J'ai une DLL écrite en Visual Basic (et générée par Visual Studio 6).

Je veux pouvoir l'utiliser dans mon code C#. D'après ce que j'ai vu sur le net, il faut écrire un truc genre :
[DllImport("Epub.dll", CharSet=CharSet.Auto)]
public static extern bool Test();

Jusque là, pas de pb, ca compile. Mais si je tente d'acceder à cette fonction, ca me sort une erreur :
Unhandled Exception: System.EntryPointNotFoundException: Unable to find an entry
 point named 'Test' in DLL 'MaDLL.dll'.
   at MaClasse.Test()
   at MaClasse.Main()

Et je comprend pas pourquoi... Ma DLL contient bien une fonction Test qui retourne un booléen...

8 réponses

Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 42
23 janv. 2007 à 16:23
Salut utilises dumpbin.exe ( dumpbin.exe -exports ) sur ta DLL pour voir le nom dest fonctions contenues. Avec Visual Basic je ne sais pas mais le C++ par xemeple décore le nom  des fonctions.. si c'est le cas elle sera accessible avec le nom décoré ou avec son index ( EntryPoint = "#1" )
0
cs_blat Messages postés 102 Date d'inscription lundi 23 décembre 2002 Statut Membre Dernière intervention 5 juin 2007 1
23 janv. 2007 à 16:28
Hum...

Dump of file Epub.dll

File Type: DLL

  Section contains the following exports for Epub.dll

           0 characteristics
    45B625C9 time date stamp Tue Jan 23 16:12:09 2007
        0.00 version
           1 ordinal base
           4 number of functions
           4 number of names

    ordinal hint RVA      name

          1    0 00001D52 DllCanUnloadNow
          2    1 00001D26 DllGetClassObject
          3    2 00001D3C DllRegisterServer
          4    3 00001D10 DllUnregisterServer

  Summary

        1000 .data
        1000 .reloc
        1000 .rsrc
        2000 .text

Aucune trace de mes fonctions oO
0
Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 42
23 janv. 2007 à 16:47
C'est du COM ça.. tu ne peux pas utiliser P/Invoke ( DllImpot ). Essaye simplement d'ajouter ta DLL à ton projet pour voir..
0
IslandMan974 Messages postés 104 Date d'inscription mercredi 4 mai 2005 Statut Membre Dernière intervention 27 juin 2007 3
25 janv. 2007 à 16:13
Salut je sais pas si tu a toujours besoin d'un coup de main:

En fait dans VS tu fais "Ajouter References" ,Normalement une boite de dialogue apparait :Tu selection l'onglet "browse" et tu selectionne ta dll.

Normalement ta dll est ajouter a ton projet dans un repertoire "bin" + une interop...

Ensuite pour l'appeler dans ton code tu fais :

Using   Nom_de_la_dll;

et dans ton code:

Nom_de_la_dll   madll = new  Nom_de_la_dll ( )

ou

Nom_de_la_dll:Nom_delaClasse   madll = new  Nom_de_la_dll ( )

En esperant aue ca d'aidera

A plus
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
IslandMan974 Messages postés 104 Date d'inscription mercredi 4 mai 2005 Statut Membre Dernière intervention 27 juin 2007 3
25 janv. 2007 à 16:15
Correction:

Nom_de_la_dll   madll = new  Nom_de_la_dll ( )
ou

Nom_de_la_dll.Nom_delaClasse   madll = new  Nom_de_la_dll ( )

Mais je pense que tu avais compris
Bon courage
0
Ayine Messages postés 4 Date d'inscription mardi 13 février 2007 Statut Membre Dernière intervention 1 décembre 2008
1 déc. 2008 à 09:39
hayine
0
beeessem Messages postés 2 Date d'inscription jeudi 9 avril 2009 Statut Membre Dernière intervention 21 novembre 2009
21 nov. 2009 à 13:42
salut j'espère que ma réponse vous aidera!!!
tout d'abord il faut ajouter une référence dans ton projet project -> add reference
ensuite vous choisirez browse et vous ajouter le dll en question
une fois cette tache est finie
vous pourez utiliser votre dll comme etant une bibliotheque importée(using madll)
et enfin vous pouvez creer une instance de cettte dll:
madll objetexemple = new madll();
et vous pouvez encore utiliser les differents services offerts pad cette dll
a++++++++++++++++
0
krimog Messages postés 1860 Date d'inscription lundi 28 novembre 2005 Statut Membre Dernière intervention 14 février 2015 51
23 nov. 2009 à 09:50
Beeessem, tout d'abord, cette réponse a déjà été donnée, de plus, ce message date de janvier 2007 :)

Krimog : while (!(succeed = try())) ;
- Nous ne sommes pas des décodeurs ambulants. Le style SMS est prohibé ! -
0