IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Discussion :

Prblm link d'une DLL sous VC98


Sujet :

Windows

  1. #1
    Membre à l'essai
    Inscrit en
    Novembre 2007
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 23
    Points : 15
    Points
    15
    Par défaut Prblm link d'une DLL sous VC98
    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 :

    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
    Voici le code réduit à l'essentiel :

    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;
    }
    Et voici la commande que je lance pour le link :
    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
    Je comprends bien qu'il n'arrive pas à s'y retrouver avec la signature des fonctions que j'utilise, mais je tourne en rond.

    Surtout que ça doit être tellement bête comme problème !

  2. #2
    Membre à l'essai
    Inscrit en
    Novembre 2007
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 23
    Points : 15
    Points
    15
    Par défaut
    Et bien j'ai trouvé un petit fichier csv fourni avec le compilateur VC98 qui me dit que les fonctions Loadlibrary et Loadicon sont issues des librairies KERNEL32.lib et USER32.lib.

    Donc j'ai modifié ma commande link, et ça va déjà beaucoup mieux.

    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 KERNEL32.lib USER32.lib
    Comme je disais, c'est vraiment bête.
    Désolé

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Information d'une DLL sous C::B
    Par _SamSoft_ dans le forum Code::Blocks
    Réponses: 4
    Dernier message: 27/02/2007, 21h46
  2. Charger une DLL sous java
    Par mouzon dans le forum Général Java
    Réponses: 1
    Dernier message: 22/03/2006, 19h46
  3. Utilisation d'une Dll sous Visual C++
    Par Hokagge dans le forum MFC
    Réponses: 3
    Dernier message: 11/01/2006, 14h40
  4. Réponses: 5
    Dernier message: 08/09/2005, 20h33
  5. Enrgistrer une dll sous IIS
    Par jeff37 dans le forum ASP
    Réponses: 2
    Dernier message: 12/07/2004, 17h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo