Salut,
La première chose à faire est de s'assurer que les fonctions et les classes dont tu auras besoin en C# sont correctement exportées.
Pour ce faire, on utilise généralement une directive préprocesseur du genre de
1 2 3 4 5 6 7 8 9
| #ifdef SHARED
#ifdef MYLIBEXPORT
#define MYLIB_API __declspec(dllexport)
#else
#define MYLIB_API __declspec(dllimport)
#endif // MYLINEXPORT
#else
#define MYLIB_API
#endif // // SHARED |
qui s'assurera que les bonnes conventions d'appel seront utilisées
on déclarera alors les classes devant être exportées par la dll sous une forme proche de
1 2 3 4
| class MYLIB_API MyClass
{
/* ...*/
}; |
et les fonctions devant être exportées sous une forme proche de
void MYLIB_API laFonctionQuiFaitPouet(/* ...*/ );
(note que tel que j'ai présenté la directive préprocesseur, elle offre l'énorme avantage de permettre les convention d'appel "classiques" dans le cas d'une application "stand alone" et / ou d'une bibliothèque statique
)
Il faut ensuite générer un projet de type "dll" de la manière classique, en ajoutant l'ensemble des fichiers du projet (à l'exception généralement de la fonction main, qui est parfois remplacée par une fonction "dllMain" qui permet de charger correctement la dll
)
Pour que la dll soit retrouvée par le programme qui doit l'utiliser, il faut, au choix:- la placer dans le meme dossier que l'exécutable qui en a besoin
- la placer dans un dossier apparaissant dans la variable PATH de l'utilisateur (ou de l'ordinateur).
- La placer dans le dossier réputé contenir l'ensemble des dll du système :
- C:\Windows\System32 ou C:\Windows\SysWOW64 selon que la bibliothèque a été compilé en mode 32 ou 64 bits (note qu'il te faudra des droits d'admin pour cette dernière solution
)
La première solution est sans doute à privilégier lorsqu'il n'y a qu'une application qui a besoin de la dll
La deuxième est généralement privilégiée lorsque la dll est susceptible d'être utilisée par plusieurs applications et que l'on souhaite éviter d'avoir à l'installer avec des privilèges d'administrateur) (il "suffit" d'un simple fichier batch pour éventuellement rajouter n'importe quel chemin à la variable PATH
)
Partager