problème avec l'édition de lien sous windows
Répondre à la discussion
Affichage des résultats 1 à 10 sur 10

problème avec l'édition de lien sous windows



  1. #1
    cosmoff

    problème avec l'édition de lien sous windows


    ------

    Bonjour à tous,

    j'utilise souvent l'IDE visual studio que je trouve plaisant à utiliser. Je suis confronté à un problème que je ne comprend pas. Pour un projet de 2ème en école d'informatique j'utilise une Kinect. Pour pouvoir récupérer les informations j'utilise le SDK OpenNi. J'ai donc configuré pour l'étape de préprocessing, le chemin absolue du fichier OpenNi.h (ou se trouve tous les prototypes), puis pour l'édition de lien, j'ai indiqué le chemin absolue ou se trouve la library OpenNi.lib puis indiqué qu'il fallait utiliser le OpenNi.lib (dans l'onglet "entrée " sur visual studio). Jusqu'à là, rien de sorcier.

    Mais quand je lance un programme test, mon compilateur me renvoie comme message d'erreur :
    "Impossible d'exécuter le code car OpenNi.dll est introuvable"

    Je ne comprend rien, lors de l'édition de lien je peux travailler avec une library en static ou en dynamique, pourquoi le compilateur a t'il besoin d'un OpenNi.dll alors que je lui fourni OpenNi.lib ?

    Merci d'avance pour votre aide.

    -----

  2. #2
    Jack
    Modérateur

    Re : problème avec l'édition de lien sous windows

    Peut-être que le code du projet cherche à charger la DLL pour en appeler les fonctions.

  3. #3
    cosmoff

    Re : problème avec l'édition de lien sous windows

    tu veux dire que OpenNi.lib a besoin d'aller chercher des fonctions dans OpenNi.dll ?
    ou que certaines fonctions de OpenNI.h se trouve dans OpenNi.dll et non dans OpenNi.lib? Mais quel est l'interet de mettre des fonctions dans OpenNi.lib et d'autre fonctions dans OpenNi.dll ?

  4. #4
    pm42

    Re : problème avec l'édition de lien sous windows

    Sans voir ta configuration du projet en détail, il est difficile d'être très précis mais il est clair que même si tu penses que tu as configuré un lien avec le .lib, l'édition s'est faite sur la DLL.

    Donc tu copies la dite DLL dans le même répertoire que ton .exe et tu as une bonne chance que cela marche.
    Ou tu cherches dans les options de Visual Studio si tu peux forcer une édition de lien statique vers ce .lib.

  5. A voir en vidéo sur Futura
  6. #5
    cosmoff

    Re : problème avec l'édition de lien sous windows

    oui effectivement j'ai copié le fichier .dll dans le répertoire de l'exécutable et ca marche mais je ne comprend pas pourquoi ca ne marche pas avec la compilation static. J'ai l'habitude de compiler en static (je l'ai réalisé déja plusieurs fois sans aucun soucis), mais la c'est étrange car il a besoin du fichier .lib et du fichier .dll pour fonctionner.

    normalement lors de l'édition de lien on a le choix d'utiliser la library .lib ou .dll mais pas les deux en meme temps, c'est ca qui me pose probleme

  7. #6
    Jack
    Modérateur

    Re : problème avec l'édition de lien sous windows

    Oui, mais comme son nom l'indique, une DLL est une librairie dynamique, donc la résolution de l'adresse de la fonction appelée se fait dynamiquement. Donc le code exploitant la fonction doit donc commencer par charger la librairie en faisant par exemple appel à LoadLibrary sous Windows.

    Si la DLL est absente, l'exécutable sera donc bien généré, contrairement à ce qui se serait passé si la librairie statique était absente, mais au moment de la création des liens dynamiques, l'appel à LoadLibrary va échouer.

  8. #7
    cosmoff

    Re : problème avec l'édition de lien sous windows

    Citation Envoyé par Jack Voir le message
    Oui, mais comme son nom l'indique, une DLL est une librairie dynamique, donc la résolution de l'adresse de la fonction appelée se fait dynamiquement. Donc le code exploitant la fonction doit donc commencer par charger la librairie en faisant par exemple appel à LoadLibrary sous Windows.

    Si la DLL est absente, l'exécutable sera donc bien généré, contrairement à ce qui se serait passé si la librairie statique était absente, mais au moment de la création des liens dynamiques, l'appel à LoadLibrary va échouer.
    mais lors de l'édition de lien on utilise soit la compilation static soit dynamique, or moi j'ai besoin des 2 library pour que ca fonctionne :
    lors de la compilation, mon IDE a besoin de OpenNI.lib, et lors de l'éxécution mon IDE a besoin de OpenNi.dll, ca me choque pas vous ?

  9. #8
    pm42

    Re : problème avec l'édition de lien sous windows

    Tu as regardé la taille de ton .lib ?
    Comparé à la dll ?

  10. #9
    cosmoff

    Re : problème avec l'édition de lien sous windows

    je n'ai pas fait attention à la taille, mon .lib fait 14 ko alors que .dll fait 286ko, pourtant j'ai téléchargé le sdk qui fournie le .lib et .dll, comment ca se fait que le .lib soit si léger ?

  11. #10
    pm42

    Re : problème avec l'édition de lien sous windows

    Je pense que ton .lib n'est qu'une facade pour le .dll. Donc quand tu lances ton appli, tu as bien linké statiquement avec mais c'est lui qui demande la dll.

Discussions similaires

  1. probleme pour comprendre l'édition de lien
    Par cosmoff dans le forum Programmation et langages, Algorithmique
    Réponses: 9
    Dernier message: 11/07/2017, 17h36
  2. Probleme avec le port 135 sous Windows Vista.
    Par invite329675bd dans le forum Internet - Réseau - Sécurité générale
    Réponses: 7
    Dernier message: 05/01/2010, 20h17
  3. Problème avec Dev c++ sous windows vista
    Par invite817c9d71 dans le forum Logiciel - Software - Open Source
    Réponses: 3
    Dernier message: 19/12/2009, 11h34
  4. Clé USB sous Windows-98 1ère édition
    Par invitec85fb8ec dans le forum Matériel - Hardware
    Réponses: 4
    Dernier message: 27/07/2009, 20h40
  5. Problème avec les Dossiers sous Windows XP Familial
    Par invite63ceea56 dans le forum Logiciel - Software - Open Source
    Réponses: 3
    Dernier message: 02/08/2004, 10h08