Bonjour à tous,
je viens en dernier recour poser mon problème, après avoir passé plusieurs jours à éplucher nombre de forums.
J'ai besoin pour un projet utilisant une vielle techno (NSDK pour les curieux), de créer une DLL (écrite en c). L'appel des fonctions exportées de la DLL doit être de forme WINAPI (__stdcall).
Dans un soucis de compatibilité avec NSDK, je suis obligé de me coltiner le compilateur VC98.
La compilation passe bien mais le link ne passe pas.
J'ai les erreurs suivantes :
Voici le code réduit à l'essentiel :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 WINBIN.obj : error LNK2001: unresolved external symbol __imp__FreeLibrary@4 WINBIN.obj : error LNK2001: unresolved external symbol __imp__LoadIconA@8 WINBIN.obj : error LNK2001: unresolved external symbol __imp__LoadLibraryA@4 WINBIN.DLL : fatal error LNK1120: 3 unresolved externals
Et voici la commande que je lance pour le link :
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 #include <windows.h> extern HMODULE WINAPI LoadLibrary(LPCTSTR lpFileName); extern BOOL WINAPI FreeLibrary(HMODULE hModule); extern HICON WINAPI LoadIcon(HINSTANCE hInstance, LPCTSTR lpIconName); HICON __declspec(dllexport) FAR WINAPI get_ico_handler(char[256], signed long); HICON __declspec(dllexport) FAR WINAPI get_ico_handler(char file_name[256], signed long ressource_id) { HINSTANCE hInst = NULL; HICON hIcon = NULL; // Chargement du fichier binaire hInst = LoadLibrary(file_name); // Extraction de l'icône en fonction du RESSOURCE ID if (hInst != NULL) { hIcon = LoadIcon(hInst, MAKEINTRESOURCE((WORD)ressource_id)); // Fermeture du fichier binaire FreeLibrary(hInst); } return (hIcon == NULL)? 0 : hIcon; }
Je comprends bien qu'il n'arrive pas à s'y retrouver avec la signature des fonctions que j'utilise, mais je tourne en rond.
Code : Sélectionner tout - Visualiser dans une fenêtre à part LINK /DLL /OUT:WINBIN.DLL /MACHINE:IX86 /NOENTRY /NODEFAULTLIB /LIBPATH:"Q:\Visual Studio\VC98\Lib" WINBIN
Surtout que ça doit être tellement bête comme problème !
Partager