Création et utilisation de DLL sous Visual Sudio 2005 pour appli graphique
Bonjour à toutes et à tous, je viens solliciter votre aide pour une question de prog sous VS 2005.
Je suis entrain de chercher à faire une DLL classique que je pourrais réutiliser pour mon appli graphique réalisée sous Visual Studio 2005 en tant que Projet Windows Forms.
L'IHM est réalisée sans problèmes, le soucis c'est que cette IHM doit utiliser une DLL et que je ne parviens pas à appeler les méthodes de cette DLL, c'est une série de messages d'erreurs à la sortie.
Pour la réalisation de la DLL, j'ai tenté différentes façons :
Premier essai :
Création d'un Projet Win32 et lors de la configuration à l'initalisation du projet j'ai choisi "DLL" et coché la case "Projet vide". Ensuite dans ce projet vide j'ai ajouté le code bateau d'une méthode qui retourne juste une valeur histoire de tester.
Code:
1 2 3 4 5 6 7 8 9
| #include <stdio.h>
extern "C"
{
__declspec(dllexport) int methode_dll_return()
{
return 5;
}
} |
Ensuite pour l'importation dans mon appli graphique, j'ai copié/collé la dll et le fichier .lib dans le répertoire de mon apli graphique ensuite j'ai ajouté le .lib comme entrée au linkage. Et j'ai droit au message d'erreur suivant quand je compile :
Code:
1 2 3
| Erreur 1 error C3861: 'methode_dll_return' :
identificateur introuvable
c:\documents and settings\artusamak\mes documents\visual studio 2005\projects\ihm_domocan_2007\ihm_domocan_2007\Form1.h 30 |
Deuxième essai :
Création d'une DLL comme au dessus en projet Win32 mais cette fois au lieu de projet vide, je sélectionne la case "Exporter des symboles" histoire d'avoir un .h pour les méthodes de la dll.
Une fois la config faite le source de la DLL ressemble à ça :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
| #include "stdafx.h"
#include "projet_developpez.h"
#ifdef _MANAGED
#pragma managed(push, off)
#endif
BOOL APIENTRY DllMain( HMODULE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
switch (ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:
case DLL_THREAD_ATTACH:
case DLL_THREAD_DETACH:
case DLL_PROCESS_DETACH:
break;
}
return TRUE;
}
#ifdef _MANAGED
#pragma managed(pop)
#endif
// Il s'agit d'un exemple de fonction exportée.
PROJET_DEVELOPPEZ_API int methode_dll_return(void)
{
return 5; |
Donc je génère ma DLL, copie le .dll et le .lib généré ainsi que le .h dans le répertoire de mon appli graphique.
Côté config de l'appli graphique je spécifie le .lib comme point d'entrée au linkage, ajoute le .h au projet et ajoute un #include du .h dans le source de l'appli. Et lorsque je compile :
Code:
1 2 3 4 5 6 7 8 9 10 11
| Erreur 3 error LNK2028: jeton non résolu (0A000056) "int __clrcall methode_dll_return(void)"
(?methode_dll_return@@$$FYMHXZ)
référencé dans la fonction "public: __clrcall IHM_DomoCAN_2007::Form1::Form1(void)"
(??0Form1@IHM_DomoCAN_2007@@$$FQ$AAM@XZ) IHM_DomoCAN_2007.obj
Erreur 4 error LNK2019: symbole externe non résolu "int __clrcall methode_dll_return(void)"
(?methode_dll_return@@$$FYMHXZ)
référencé dans la fonction "public: __clrcall IHM_DomoCAN_2007::Form1::Form1(void)"
(??0Form1@IHM_DomoCAN_2007@@$$FQ$AAM@XZ)
IHM_DomoCAN_2007.obj |
Voilà donc je ne sais plus comment m'y prendre pour pouvoir utiliser une DLL dans cette IHM :(
Merci à vous si vous avez un éclat de génie ! ;)