Bonjour à tous,

J'ai un petit problème sur un programme que je n'arrive pas à résoudre à propos de la fonction Dllimport. En deux mots : Mon programme en C# doit aller chercher une Dll non managée en C++ pour utiliser les fonctions de la Dll.
Jusque la tout fonctionne. Mais ce programme est fait pour être mobile.
Sur ma clef, j'ai copier le fichier .exe et la Dll. Ces fichiers seront ensuite copier sur l'ordinateur de la personne qui souhaite utiliser l'application. Donc les adresses "path" de la Dll changerons tous les 4 matins.

exemple de ma fonctions Dll import (fonctionne correctement) :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
 
 
[DllImport("C:/exemple.dll",
                CharSet = CharSet.Auto,
                CallingConvention = CallingConvention.Cdecl)]
            [return: MarshalAs(UnmanagedType.I4)]
            public static extern Int32 F_FonctionDll(Int32 no);
Maintenant j'aimerais pouvoir remplacer le lien : "C:/exemple.exe" par un chemin automatique. Donc j'ai trouvé la fonction : Application.StartupPat
(qui me permet d'obtenir le path de mon fichier exécutable:


Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
 
 
String adress = Application.StartupPath;        // Me donne tous le chemin     jusqu'au dossier de l’exécutable sans le nom de l'exe. 
System.Type type = Application.StartupPath.GetType();
 
            [DllImport(adress + "maDll.dll", // visual ne veut rien entendre ca ne marche pas.... :-(
                CharSet = CharSet.Auto,
                CallingConvention = CallingConvention.Cdecl)]
            [return: MarshalAs(UnmanagedType.I4)]
            public static extern Int32 F_FonctionDll(Int32 no);


Mais la, ça ne fonctionne pas. Mes compétences étant réduite, je n'arrive pas à trouver de réelle solution pour que ça fonctionne, quelqu'un pourrait m'aider??

Cordialement , Clément