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.
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 : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 #include <stdio.h> extern "C" { __declspec(dllexport) int methode_dll_return() { return 5; } }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 :
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.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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;
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 !
Partager