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

C Discussion :

Compiler libusb-win32 sous Visual C++


Sujet :

C

  1. #41
    Expert éminent sénior

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 189
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 189
    Points : 17 141
    Points
    17 141
    Par défaut
    cool…
    Mes principes de bases du codeur qui veut pouvoir dormir:
    • Une variable de moins est une source d'erreur en moins.
    • Un pointeur de moins est une montagne d'erreurs en moins.
    • Un copier-coller, ça doit se justifier... Deux, c'est un de trop.
    • jamais signifie "sauf si j'ai passé trois jours à prouver que je peux".
    • La plus sotte des questions est celle qu'on ne pose pas.
    Pour faire des graphes, essayez yEd.
    le ter nel est le titre porté par un de mes personnages de jeu de rôle

  2. #42
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Juin 2009
    Messages
    4 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 481
    Points : 13 679
    Points
    13 679
    Billets dans le blog
    1
    Par défaut
    VDM

  3. #43
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2013
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2013
    Messages : 57
    Points : 17
    Points
    17
    Par défaut
    J'apprends le métier de développeur

    Alors que mon domaine est le hard...

  4. #44
    Membre expert
    Avatar de Metalman
    Homme Profil pro
    Enseignant-Chercheur
    Inscrit en
    Juin 2005
    Messages
    1 049
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Enseignant-Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 049
    Points : 3 532
    Points
    3 532
    Par défaut
    En effet c'est très moche....

    Mais le résultat m'intéresse tout de même !

    Bon courage pour la suite !
    --
    Metalman !

    Attendez 5 mins après mes posts... les EDIT vont vite avec moi...
    Les flags de la vie : gcc -W -Wall -Werror -ansi -pedantic mes_sources.c
    gcc -Wall -Wextra -Werror -std=c99 -pedantic mes_sources.c
    (ANSI retire quelques fonctions comme strdup...)
    L'outil de la vie : valgrind --show-reachable=yes --leak-check=full ./mon_programme
    Et s'assurer que la logique est bonne "aussi" !

    Ma page Developpez.net

  5. #45
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2013
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2013
    Messages : 57
    Points : 17
    Points
    17
    Par défaut
    Je posterai lorsque j'aurais réussi à compiler

  6. #46
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2013
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2013
    Messages : 57
    Points : 17
    Points
    17
    Par défaut
    Je poste mais je n'arrive toujours pas à compiler
    Je n'ai plus d'idée pour le forcer à compiler là, il me nargue en affichant toujours le même message:

    ------ Début de la génération*: Projet*: DriverBis, Configuration*: Release Win32 ------
    LINK : fatal error LNK1181: impossible d'ouvrir le fichier en entrée 'usb.lib'
    ========== Génération*: 0 a réussi, 1 a échoué, 0 mis à jour, 0 a été ignoré ==========
    J'ai été dans propriétés -> Editeur de lien-> Général -> Répertoires des bibliothèques supplémentaires, rien ne change...
    J'ai fait propriétés -> Editeur de lien -> entrée -> dépendances supplémentaires, là encore ça ne change rien...
    Dans la ligne de commande, j'ai essayé /FORCE usb.lib, toujours rien!
    J'ai essayé /LIBPATH usb.lib aussi, comme dit ici...
    ....je vous laisse deviner le résultat...

    Et tout les fichiers sont correctement placés dans leur dossier et tout....

  7. #47
    Expert éminent sénior

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 189
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 189
    Points : 17 141
    Points
    17 141
    Par défaut
    Tu as regardé ce que dit MSDN??
    Mes principes de bases du codeur qui veut pouvoir dormir:
    • Une variable de moins est une source d'erreur en moins.
    • Un pointeur de moins est une montagne d'erreurs en moins.
    • Un copier-coller, ça doit se justifier... Deux, c'est un de trop.
    • jamais signifie "sauf si j'ai passé trois jours à prouver que je peux".
    • La plus sotte des questions est celle qu'on ne pose pas.
    Pour faire des graphes, essayez yEd.
    le ter nel est le titre porté par un de mes personnages de jeu de rôle

  8. #48
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2013
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2013
    Messages : 57
    Points : 17
    Points
    17
    Par défaut
    J'avais trouvé l'équivalent en anglais ...à part pour les espaces, mais c'est une chose à laquelle je fais gaffe.

  9. #49
    Expert éminent sénior

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 189
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 189
    Points : 17 141
    Points
    17 141
    Par défaut
    Comme les corrections classiques ont été proposées, je ne vois pas que dire de plus
    Mes principes de bases du codeur qui veut pouvoir dormir:
    • Une variable de moins est une source d'erreur en moins.
    • Un pointeur de moins est une montagne d'erreurs en moins.
    • Un copier-coller, ça doit se justifier... Deux, c'est un de trop.
    • jamais signifie "sauf si j'ai passé trois jours à prouver que je peux".
    • La plus sotte des questions est celle qu'on ne pose pas.
    Pour faire des graphes, essayez yEd.
    le ter nel est le titre porté par un de mes personnages de jeu de rôle

  10. #50
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2013
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2013
    Messages : 57
    Points : 17
    Points
    17
    Par défaut
    Dans le doute que ça puisse être un bug de Visual, j'ai tenté ce matin de faire un nouveau projet mais je me retrouve avec le même soucis.

    Je suis sûr que c'est une configuration de Visual à modifier au moins.

  11. #51
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2013
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2013
    Messages : 57
    Points : 17
    Points
    17
    Par défaut
    Après moult bricolages, des crampes aux doigts et les yeux tout rouge, je crois que j'ai viré la dernière erreur.... (me demandez pas comment j'ai fait, je cherche encore... )

    ...mais elle a laissé place à d'autres! (dans le même genre qu'avant)

    Je mets le rapport complet.... (ouch, du lourd!!!)

    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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    ------ Début de la génération*: Projet*: DriverBis, Configuration*: Debug Win32 ------
    install_filter_win.obj : error LNK2005: _output_debug déjà défini(e) dans inf_wizard.obj
    install_filter_win.obj : error LNK2005: _WinMain@16 déjà défini(e) dans inf_wizard.obj
    install_filter_win.obj : error LNK2005: _dialog_proc_0@16 déjà défini(e) dans inf_wizard.obj
    install_filter_win.obj : error LNK2005: _dialog_proc_1@16 déjà défini(e) dans inf_wizard.obj
    install_filter_win.obj : error LNK2005: _create_tooltip déjà défini(e) dans inf_wizard.obj
    install_filter_win.obj : error LNK2005: _info_text_0 déjà défini(e) dans inf_wizard.obj
    install_filter_win.obj : error LNK2005: _info_text_1 déjà défini(e) dans inf_wizard.obj
    install_filter_win.obj : error LNK2005: _package_contents_fmt_0 déjà défini(e) dans inf_wizard.obj
    install_filter_win.obj : error LNK2005: _package_contents_fmt_1 déjà défini(e) dans inf_wizard.obj
    install_filter_win.obj : error LNK2005: _tooltips_dlg1 déjà défini(e) dans inf_wizard.obj
    install_filter_win.obj : error LNK2005: _g_hInst déjà défini(e) dans inf_wizard.obj
    libusb_dyn.obj : error LNK2005: _usb_get_descriptor_by_endpoint déjà défini(e) dans descriptors.obj
    libusb_dyn.obj : error LNK2005: _usb_get_descriptor déjà défini(e) dans descriptors.obj
    libusb_dyn.obj : error LNK2005: _usb_strerror déjà défini(e) dans error.obj
    libusb_dyn.obj : error LNK2005: _usb_install_service_np déjà défini(e) dans install.obj
    libusb_dyn.obj : error LNK2005: _usb_uninstall_service_np déjà défini(e) dans install.obj
    libusb_dyn.obj : error LNK2005: _usb_install_driver_np déjà défini(e) dans install.obj
    usb.obj : error LNK2005: _usb_find_busses déjà défini(e) dans libusb_dyn.obj
    usb.obj : error LNK2005: _usb_find_devices déjà défini(e) dans libusb_dyn.obj
    usb.obj : error LNK2005: _usb_init déjà défini(e) dans libusb_dyn.obj
    usb.obj : error LNK2005: _usb_open déjà défini(e) dans libusb_dyn.obj
    usb.obj : error LNK2005: _usb_get_string déjà défini(e) dans libusb_dyn.obj
    usb.obj : error LNK2005: _usb_get_string_simple déjà défini(e) dans libusb_dyn.obj
    usb.obj : error LNK2005: _usb_close déjà défini(e) dans libusb_dyn.obj
    usb.obj : error LNK2005: _usb_device déjà défini(e) dans libusb_dyn.obj
    usb.obj : error LNK2005: _usb_get_busses déjà défini(e) dans libusb_dyn.obj
    windows.obj : error LNK2005: _usb_set_configuration déjà défini(e) dans libusb_dyn.obj
    windows.obj : error LNK2005: _usb_claim_interface déjà défini(e) dans libusb_dyn.obj
    windows.obj : error LNK2005: _usb_release_interface déjà défini(e) dans libusb_dyn.obj
    windows.obj : error LNK2005: _usb_set_altinterface déjà défini(e) dans libusb_dyn.obj
    windows.obj : error LNK2005: _usb_submit_async déjà défini(e) dans libusb_dyn.obj
    windows.obj : error LNK2005: _usb_reap_async déjà défini(e) dans libusb_dyn.obj
    windows.obj : error LNK2005: _usb_free_async déjà défini(e) dans libusb_dyn.obj
    windows.obj : error LNK2005: _usb_bulk_write déjà défini(e) dans libusb_dyn.obj
    windows.obj : error LNK2005: _usb_bulk_read déjà défini(e) dans libusb_dyn.obj
    windows.obj : error LNK2005: _usb_interrupt_write déjà défini(e) dans libusb_dyn.obj
    windows.obj : error LNK2005: _usb_interrupt_read déjà défini(e) dans libusb_dyn.obj
    windows.obj : error LNK2005: _usb_isochronous_setup_async déjà défini(e) dans libusb_dyn.obj
    windows.obj : error LNK2005: _usb_bulk_setup_async déjà défini(e) dans libusb_dyn.obj
    windows.obj : error LNK2005: _usb_interrupt_setup_async déjà défini(e) dans libusb_dyn.obj
    windows.obj : error LNK2005: _usb_control_msg déjà défini(e) dans libusb_dyn.obj
    windows.obj : error LNK2005: _usb_resetep déjà défini(e) dans libusb_dyn.obj
    windows.obj : error LNK2005: _usb_clear_halt déjà défini(e) dans libusb_dyn.obj
    windows.obj : error LNK2005: _usb_reset déjà défini(e) dans libusb_dyn.obj
    windows.obj : error LNK2005: _usb_reset_ex déjà défini(e) dans libusb_dyn.obj
    windows.obj : error LNK2005: _usb_get_version déjà défini(e) dans libusb_dyn.obj
    windows.obj : error LNK2005: _usb_set_debug déjà défini(e) dans libusb_dyn.obj
    LINK : warning LNK4031: aucun sous-système spécifié*; CONSOLE pris par défaut
    reset_device.obj : error LNK2001: symbole externe non résolu __imp__ExFreePoolWithTag
    set_configuration.obj : error LNK2019: symbole externe non résolu __imp__ExFreePoolWithTag référencé dans la fonction _set_configuration
    set_interface.obj : error LNK2001: symbole externe non résolu __imp__ExFreePoolWithTag
    transfer.obj : error LNK2001: symbole externe non résolu __imp__ExFreePoolWithTag
    driver_registry.obj : error LNK2001: symbole externe non résolu __imp__ExFreePoolWithTag
    get_descriptor.obj : error LNK2001: symbole externe non résolu __imp__ExFreePoolWithTag
    libusb_driver.obj : error LNK2001: symbole externe non résolu __imp__ExFreePoolWithTag
    pnp.obj : error LNK2001: symbole externe non résolu __imp__ExFreePoolWithTag
    driver_registry.obj : error LNK2019: symbole externe non résolu __imp_@ObfDereferenceObject@4 référencé dans la fonction _reg_get_properties
    libusb_driver.obj : error LNK2001: symbole externe non résolu __imp_@ObfDereferenceObject@4
    driver_registry.obj : error LNK2019: symbole externe non résolu __imp__ObQueryNameString référencé dans la fonction _reg_get_properties
    driver_registry.obj : error LNK2019: symbole externe non résolu __imp__ObReferenceObjectByHandle référencé dans la fonction _reg_get_properties
    driver_registry.obj : error LNK2019: symbole externe non résolu __imp__RtlGUIDFromString@8 référencé dans la fonction _reg_get_properties
    driver_registry.obj : error LNK2019: symbole externe non résolu __imp__ZwQueryValueKey@24 référencé dans la fonction _reg_get_properties
    driver_registry.obj : error LNK2019: symbole externe non résolu __imp__ZwClose@4 référencé dans la fonction _reg_get_properties
    libusb_driver.obj : error LNK2001: symbole externe non résolu __imp__ZwClose@4
    transfer.obj : error LNK2001: symbole externe non résolu __imp__ExAllocatePoolWithTag@12
    driver_registry.obj : error LNK2019: symbole externe non résolu __imp__ExAllocatePoolWithTag@12 référencé dans la fonction _reg_get_properties
    get_descriptor.obj : error LNK2001: symbole externe non résolu __imp__ExAllocatePoolWithTag@12
    set_configuration.obj : error LNK2001: symbole externe non résolu __imp__ExAllocatePoolWithTag@12
    set_interface.obj : error LNK2001: symbole externe non résolu __imp__ExAllocatePoolWithTag@12
    driver_registry.obj : error LNK2019: symbole externe non résolu __imp__RtlInitUnicodeString@8 référencé dans la fonction _reg_get_properties
    libusb_driver.obj : error LNK2001: symbole externe non résolu __imp__RtlInitUnicodeString@8
    pnp.obj : error LNK2001: symbole externe non résolu __imp__RtlInitUnicodeString@8
    driver_registry.obj : error LNK2019: symbole externe non résolu __imp__IoOpenDeviceRegistryKey référencé dans la fonction _reg_get_properties
    driver_registry.obj : error LNK2019: symbole externe non résolu __imp__IoGetDeviceProperty référencé dans la fonction _reg_get_property
    driver_registry.obj : error LNK2019: symbole externe non résolu __imp__ZwSetValueKey@24 référencé dans la fonction _set_filter_interface_key
    libusb_driver.obj : error LNK2001: symbole externe non résolu __imp__ZwSetValueKey@24
    driver_registry.obj : error LNK2019: symbole externe non résolu __imp__IoOpenDeviceInterfaceRegistryKey référencé dans la fonction _set_filter_interface_key
    libusb_driver.obj : error LNK2001: symbole externe non résolu __imp__IoOpenDeviceInterfaceRegistryKey
    inf_wizard.obj : error LNK2019: symbole externe non résolu _wdi_destroy_list@4 référencé dans la fonction _WinMain@16
    inf_wizard.obj : error LNK2019: symbole externe non résolu __imp__InitCommonControls@0 référencé dans la fonction _WinMain@16
    install_filter_win.obj : error LNK2001: symbole externe non résolu __imp__InitCommonControls@0
    inf_wizard.obj : error LNK2019: symbole externe non résolu _wdi_get_vendor_name@4 référencé dans la fonction _device_list_wndproc@16
    inf_wizard.obj : error LNK2019: symbole externe non résolu _wdi_is_driver_supported@8 référencé dans la fonction _dialog_proc_2@16
    inf_wizard.obj : error LNK2019: symbole externe non résolu _wdi_create_list@8 référencé dans la fonction _device_list_refresh
    inf_wizard.obj : error LNK2019: symbole externe non résolu _wdi_strerror@4 référencé dans la fonction _infwizard_prepare_driver
    inf_wizard.obj : error LNK2019: symbole externe non résolu _wdi_prepare_driver@16 référencé dans la fonction _infwizard_prepare_driver
    inf_wizard.obj : error LNK2019: symbole externe non résolu _wdi_install_driver@16 référencé dans la fonction _infwizard_install_driver
    install.obj : error LNK2019: symbole externe non résolu __imp__SetupGetStringFieldA@20 référencé dans la fonction _usb_install_find_model_section
    install.obj : error LNK2019: symbole externe non résolu __imp__SetupFindFirstLineA@16 référencé dans la fonction _usb_install_find_model_section
    install.obj : error LNK2019: symbole externe non résolu __imp__SetupFindNextLine@8 référencé dans la fonction _usb_install_inf_np
    install.obj : error LNK2019: symbole externe non résolu __imp__SetupDiDestroyDeviceInfoList@4 référencé dans la fonction _usb_install_inf_np
    install_filter_win.obj : error LNK2001: symbole externe non résolu __imp__SetupDiDestroyDeviceInfoList@4
    registry.obj : error LNK2001: symbole externe non résolu __imp__SetupDiDestroyDeviceInfoList@4
    install.obj : error LNK2019: symbole externe non résolu __imp__SetupDiSetDeviceRegistryPropertyA@20 référencé dans la fonction _usb_install_inf_np
    registry.obj : error LNK2001: symbole externe non résolu __imp__SetupDiSetDeviceRegistryPropertyA@20
    install.obj : error LNK2019: symbole externe non résolu __imp__CM_Get_DevNode_Status@16 référencé dans la fonction _usb_install_inf_np
    install.obj : error LNK2019: symbole externe non résolu __imp__SetupDiRemoveDevice@8 référencé dans la fonction _usb_install_inf_np
    install.obj : error LNK2019: symbole externe non résolu __imp__SetupDiGetDeviceRegistryPropertyA@28 référencé dans la fonction _usb_install_inf_np
    registry.obj : error LNK2001: symbole externe non résolu __imp__SetupDiGetDeviceRegistryPropertyA@28
    install.obj : error LNK2019: symbole externe non résolu __imp__SetupDiEnumDeviceInfo@12 référencé dans la fonction _usb_install_inf_np
    install_filter_win.obj : error LNK2001: symbole externe non résolu __imp__SetupDiEnumDeviceInfo@12
    registry.obj : error LNK2001: symbole externe non résolu __imp__SetupDiEnumDeviceInfo@12
    install.obj : error LNK2019: symbole externe non résolu __imp__SetupDiGetClassDevsA@16 référencé dans la fonction _usb_install_inf_np
    install_filter_win.obj : error LNK2001: symbole externe non résolu __imp__SetupDiGetClassDevsA@16
    registry.obj : error LNK2001: symbole externe non résolu __imp__SetupDiGetClassDevsA@16
    install.obj : error LNK2019: symbole externe non résolu __imp__SetupCloseInfFile@4 référencé dans la fonction _usb_install_inf_np
    install.obj : error LNK2019: symbole externe non résolu __imp__SetupOpenInfFileA@16 référencé dans la fonction _usb_install_inf_np
    install.obj : error LNK2019: symbole externe non résolu __imp__SetupDiGetDeviceInstallParamsA@12 référencé dans la fonction _usb_install_needs_restart_np
    install_filter_win.obj : error LNK2019: symbole externe non résolu __imp__CM_Get_Device_IDA@16 référencé dans la fonction _device_list_refresh
    registry.obj : error LNK2001: symbole externe non résolu __imp__CM_Get_Device_IDA@16
    libusb_driver.obj : error LNK2019: symbole externe non résolu __imp__IoAttachDeviceToDeviceStack référencé dans la fonction _add_device
    libusb_driver.obj : error LNK2019: symbole externe non résolu __imp__IoRegisterDeviceInterface@16 référencé dans la fonction _add_device
    libusb_driver.obj : error LNK2019: symbole externe non résolu __imp__IoDeleteSymbolicLink référencé dans la fonction _add_device
    pnp.obj : error LNK2001: symbole externe non résolu __imp__IoDeleteSymbolicLink
    libusb_driver.obj : error LNK2019: symbole externe non résolu __imp__IoDeleteDevice référencé dans la fonction _add_device
    pnp.obj : error LNK2001: symbole externe non résolu __imp__IoDeleteDevice
    libusb_driver.obj : error LNK2019: symbole externe non résolu __imp__IoCreateSymbolicLink référencé dans la fonction _add_device
    libusb_driver.obj : error LNK2019: symbole externe non résolu __imp__IoCreateDevice référencé dans la fonction _add_device
    libusb_driver.obj : error LNK2019: symbole externe non résolu __imp__IoGetAttachedDeviceReference référencé dans la fonction _add_device
    libusb_driver.obj : error LNK2019: symbole externe non résolu __imp__RtlFreeAnsiString@4 référencé dans la fonction _match_driver
    libusb_driver.obj : error LNK2019: symbole externe non résolu __imp__RtlUnicodeStringToAnsiString@12 référencé dans la fonction _match_driver
    libusb_driver.obj : error LNK2019: symbole externe non résolu __imp_@IofCompleteRequest@8 référencé dans la fonction _complete_irp
    power.obj : error LNK2001: symbole externe non résolu __imp_@IofCompleteRequest@8
    transfer.obj : error LNK2001: symbole externe non résolu __imp_@IofCompleteRequest@8
    libusb_driver.obj : error LNK2019: symbole externe non résolu __imp__IoCancelIrp référencé dans la fonction _call_usbd_ex
    transfer.obj : error LNK2001: symbole externe non résolu __imp__IoCancelIrp
    libusb_driver.obj : error LNK2019: symbole externe non résolu __imp__KeWaitForSingleObject référencé dans la fonction _call_usbd_ex
    power.obj : error LNK2001: symbole externe non résolu __imp__KeWaitForSingleObject
    libusb_driver.obj : error LNK2019: symbole externe non résolu __imp_@IofCallDriver@8 référencé dans la fonction _call_usbd_ex
    transfer.obj : error LNK2001: symbole externe non résolu __imp_@IofCallDriver@8
    libusb_driver.obj : error LNK2019: symbole externe non résolu __imp__IoBuildDeviceIoControlRequest référencé dans la fonction _call_usbd_ex
    libusb_driver.obj : error LNK2019: symbole externe non résolu __imp__KeInitializeEvent référencé dans la fonction _call_usbd_ex
    power.obj : error LNK2001: symbole externe non résolu __imp__KeInitializeEvent
    libusb_driver.obj : error LNK2019: symbole externe non résolu __imp__KeSetEvent référencé dans la fonction _on_usbd_complete
    power.obj : error LNK2001: symbole externe non résolu __imp__KeSetEvent
    pnp.obj : error LNK2019: symbole externe non résolu __imp__PoSetPowerState référencé dans la fonction _dispatch_pnp
    power.obj : error LNK2001: symbole externe non résolu __imp__PoSetPowerState
    pnp.obj : error LNK2019: symbole externe non résolu __imp__IoDetachDevice référencé dans la fonction _dispatch_pnp
    pnp.obj : error LNK2019: symbole externe non résolu __imp__RtlFreeUnicodeString@4 référencé dans la fonction _dispatch_pnp
    pnp.obj : error LNK2019: symbole externe non résolu __imp__IoSetDeviceInterfaceState référencé dans la fonction _dispatch_pnp
    power.obj : error LNK2019: symbole externe non résolu __imp__PoCallDriver référencé dans la fonction _dispatch_power
    power.obj : error LNK2019: symbole externe non résolu __imp__PoStartNextPowerIrp référencé dans la fonction _dispatch_power
    power.obj : error LNK2019: symbole externe non résolu __imp__PoRequestPowerIrp référencé dans la fonction _power_set_device_state
    registry.obj : error LNK2019: symbole externe non résolu __imp__SetupDiOpenDevRegKey@24 référencé dans la fonction _usb_registry_set_property
    registry.obj : error LNK2019: symbole externe non résolu __imp__SetupDiCallClassInstaller@12 référencé dans la fonction _usb_registry_set_device_state
    registry.obj : error LNK2019: symbole externe non résolu __imp__SetupDiSetClassInstallParamsA@16 référencé dans la fonction _usb_registry_set_device_state
    set_configuration.obj : error LNK2019: symbole externe non résolu __imp__USBD_CreateConfigurationRequestEx référencé dans la fonction _set_configuration
    transfer.obj : error LNK2019: symbole externe non résolu __imp__IoFreeMdl référencé dans la fonction _large_transfer
    transfer.obj : error LNK2019: symbole externe non résolu __imp__IoFreeIrp référencé dans la fonction _large_transfer
    transfer.obj : error LNK2019: symbole externe non résolu __imp__IoBuildPartialMdl référencé dans la fonction _large_transfer
    transfer.obj : error LNK2019: symbole externe non résolu __imp__IoAllocateMdl référencé dans la fonction _large_transfer
    transfer.obj : error LNK2019: symbole externe non résolu __imp__IoAllocateIrp référencé dans la fonction _large_transfer
    transfer.obj : error LNK2019: symbole externe non résolu __imp__IoReleaseCancelSpinLock référencé dans la fonction _large_transfer_complete
    transfer.obj : error LNK2019: symbole externe non résolu __imp__MmMapLockedPagesSpecifyCache référencé dans la fonction _large_transfer_complete
    transfer.obj : error LNK2019: symbole externe non résolu __imp__IoAcquireCancelSpinLock référencé dans la fonction _large_transfer_complete
    C:\WinDDK\7600.16385.1\src\DRIVER\DriverBis\Debug\DriverBis.exe : fatal error LNK1120: 70 externes non résolus
    ========== Génération*: 0 a réussi, 1 a échoué, 0 mis à jour, 0 a été ignoré ==========

  12. #52
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Je vois deux classes d'erreurs: Des définitions multiples (compilerais-tu des fichiers sources qui s'incluent les uns les autres, ou quoi?) et des fonctions dllimport non trouvées (apparemment tu oublies de lier à NTOSKrnl.lib)

    Il y a aussi LINK : warning LNK4031: aucun sous-système spécifié*; CONSOLE pris par défaut à voir; tu es censé lui dire sur quel sous-système tu travailles, même si c'est "aucun" (driver).
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  13. #53
    Expert éminent sénior

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 189
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 189
    Points : 17 141
    Points
    17 141
    Par défaut
    les causes probables d'une définition multiples sont:
    • Présence d'une définition non inline dans un en-tête (inclus plusieurs fois). solution? rejeter la définition dans un fichier d'implémentation (.c) ou inline-er
    • Inclusions du même fichier d'objet compilé (.o) dans l'édition de lien. solution? ne pas le faire, en nettoyant le fichier de projet
    Mes principes de bases du codeur qui veut pouvoir dormir:
    • Une variable de moins est une source d'erreur en moins.
    • Un pointeur de moins est une montagne d'erreurs en moins.
    • Un copier-coller, ça doit se justifier... Deux, c'est un de trop.
    • jamais signifie "sauf si j'ai passé trois jours à prouver que je peux".
    • La plus sotte des questions est celle qu'on ne pose pas.
    Pour faire des graphes, essayez yEd.
    le ter nel est le titre porté par un de mes personnages de jeu de rôle

  14. #54
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2013
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2013
    Messages : 57
    Points : 17
    Points
    17
    Par défaut
    Citation Envoyé par Médinoc Voir le message
    Je vois deux classes d'erreurs: Des définitions multiples (compilerais-tu des fichiers sources qui s'incluent les uns les autres, ou quoi?)
    C'est vrai que j'ai pas pensé à vérifier si des sources s'incluaient mutuellement... Ca serait bien tordu quand même!
    Par contre j'ai des en-têtes qui en appellent d'autres, rien de dérangeant à cela?

    Citation Envoyé par Médinoc Voir le message
    (apparemment tu oublies de lier à NTOSKrnl.lib)
    Quand j'essaie d'ajouter ntoskrnl.lib, le compilateur me dit qu'il n'arrive pas à l'ouvrir.

    EDIT: Quel idiot! En le plaçant dans le bon dossier, ça va déjà mieux

  15. #55
    Membre expert
    Avatar de Metalman
    Homme Profil pro
    Enseignant-Chercheur
    Inscrit en
    Juin 2005
    Messages
    1 049
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Enseignant-Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 049
    Points : 3 532
    Points
    3 532
    Par défaut
    N'oublie pas de protéger tes headers !

    fichier_1.h :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    #ifndef FICHIER_1_H_
    # define FICHIER_1_H_
     
    # include <windows.h>
     
    # include "fichier_2.h"
     
    ...
    int MaFonction(int Entier);
    ...
     
    #endif /* !FICHIER_1_H_ */
    A faire dans chacun de tes .h !

    EDIT : et il vaut mieux éviter d'inclure des .c entre eux...
    Chaque .c inclue un ou des .h qui incluent eux-même des .h uniquement !
    Et tous les .h sont protégés !
    --
    Metalman !

    Attendez 5 mins après mes posts... les EDIT vont vite avec moi...
    Les flags de la vie : gcc -W -Wall -Werror -ansi -pedantic mes_sources.c
    gcc -Wall -Wextra -Werror -std=c99 -pedantic mes_sources.c
    (ANSI retire quelques fonctions comme strdup...)
    L'outil de la vie : valgrind --show-reachable=yes --leak-check=full ./mon_programme
    Et s'assurer que la logique est bonne "aussi" !

    Ma page Developpez.net

  16. #56
    Expert éminent sénior

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 189
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 189
    Points : 17 141
    Points
    17 141
    Par défaut
    il faut bien comprendre que #include est une commande pour le préprocesseur.
    Ca correspond plus ou moins à copier coller le contenu du fichier désigné puis de continuer à préprocesser (par la premiere ligne du fichier inclus, du coup)
    Mes principes de bases du codeur qui veut pouvoir dormir:
    • Une variable de moins est une source d'erreur en moins.
    • Un pointeur de moins est une montagne d'erreurs en moins.
    • Un copier-coller, ça doit se justifier... Deux, c'est un de trop.
    • jamais signifie "sauf si j'ai passé trois jours à prouver que je peux".
    • La plus sotte des questions est celle qu'on ne pose pas.
    Pour faire des graphes, essayez yEd.
    le ter nel est le titre porté par un de mes personnages de jeu de rôle

  17. #57
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2013
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2013
    Messages : 57
    Points : 17
    Points
    17
    Par défaut
    Citation Envoyé par Metalman
    N'oublie pas de protéger tes headers !
    Je viens de finir de le faire. La plupart l'était déjà en fait. Je m'attaque maintenant aux erreurs de link.

    L'erreur LNK2005 est-elle possible si on a une fonction qui est déclarée dans un .c ET dans un .h que ce même point .c appelle?
    Par exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    //header1.h
     
    int MaFonction(char marchin)
    { //des instructions
    };
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    //source.c
    #include header1.h
     
    int MaFonction(char machin)
    {//des instructions
    };
    Apparemment j'aurais des trucs comme ça.

  18. #58
    Membre expert
    Avatar de Metalman
    Homme Profil pro
    Enseignant-Chercheur
    Inscrit en
    Juin 2005
    Messages
    1 049
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Enseignant-Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 049
    Points : 3 532
    Points
    3 532
    Par défaut
    Dans les .h tu ne dois avoir QUE les les "signatures" de fonctions !
    Et dans les .c tu les implémentes !

    Et attention aussi : si tu modifies les .h et leurs ordres d'inclusion, il faut assez souvent faire un clean du projet et recompiler.
    (C'est surtout que si tu modifies localement un .c, il sera automatiquement recompilé, mais pas toujours pour les .h)

    Bref, la signature (dans le .h) d'une fonction c'est simplement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    #ifndef FILE_H_
    # define FILE_H_
     
    # include <windows.h>
     
    # include "file_2.h"
     
    int MaFonction(char arg);
     
    #endif /* !FILE_H_ */
    Et dans le .c tu auras :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    #include "file.h"
     
    int MaFonction(char arg)
    {
    ...
    }
    Tu peux (et doit) avoir cela pour les fonctions exportables.
    Pourquoi ?
    Comme tu vas inclure les .h entre eux, les sources ayant besoin de fonctions présentes dans d'autres .c vont automatiquement comprendre qu'elles ne trouvent pas le code, mais qu'il sera mis lors de la phase de link !
    --
    Metalman !

    Attendez 5 mins après mes posts... les EDIT vont vite avec moi...
    Les flags de la vie : gcc -W -Wall -Werror -ansi -pedantic mes_sources.c
    gcc -Wall -Wextra -Werror -std=c99 -pedantic mes_sources.c
    (ANSI retire quelques fonctions comme strdup...)
    L'outil de la vie : valgrind --show-reachable=yes --leak-check=full ./mon_programme
    Et s'assurer que la logique est bonne "aussi" !

    Ma page Developpez.net

  19. #59
    Expert éminent sénior

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 189
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 189
    Points : 17 141
    Points
    17 141
    Par défaut
    C'est en rapport avec la règle de la définition unique (one definition rule ou ODR).
    Toute chose utilisée doit être définie une et une seule fois.
    Pour bien comprendre, il faut comprendre la différence entre déclaration et définition.

    Une déclaration dit au compilateur "je sais que ceci sera défini, ne t'inquiète pas".
    Une définition lui dit au contraire "Voici la définition de cette chose à utiliser pendant l'édition de lien".

    Pour la compilation, et l'édition de lien, il n'y a que le concept de symbole. Un symbole à un genre parmi: type, variable, fonction, espace de nom et littéral.
    Chacun à sa forme de déclaration et de définition.

    En gros, les définitions ont les formes suivantes:
    • struct t{/**/}; ou typedef type nom; ou encore using nom = type;
    • int i;
    • void f(int a){/**/}; (ici, "int a" est aussi une définition)
    • namespace truc {/*contenu*/}
    • 2, '2', "phrase"


    Les déclarations, qui ne créent pas de symbole complet:
    • struct t;, t est alors un type incomplet, utilisable en l'état uniquement pour déclarer des pointeurs ou références.
    • external int i; (surtout, pas de valeur)
    • void f(int a); (ici, "a" est un commentaire, et int fait parti de la déclaration de f)
    • déclarer un namespace n'a pas d'intérêt, mais je crois que ca serait namespace truc;
    • rien pour les littéraux.


    Tu peux déclarer les choses autant de fois que tu veux, mais une seule définition est autorisée:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    int main();
    int f();//déclaration: il existe f une fonction de void vers int
    int f();//déclaration: il existe f une fonction de void vers int
    int f() {return 0;}//définition: f est {return 0;}
    int f();//déclaration: il existe f une fonction de void vers int
    int f() {return 1;}//définition: f est {return 1;}
    int main() {
        return f();//quelle définition de f le compilateur doit-il choisir? c'est ambigü, dont c'est rejeté.
    }
    Mes principes de bases du codeur qui veut pouvoir dormir:
    • Une variable de moins est une source d'erreur en moins.
    • Un pointeur de moins est une montagne d'erreurs en moins.
    • Un copier-coller, ça doit se justifier... Deux, c'est un de trop.
    • jamais signifie "sauf si j'ai passé trois jours à prouver que je peux".
    • La plus sotte des questions est celle qu'on ne pose pas.
    Pour faire des graphes, essayez yEd.
    le ter nel est le titre porté par un de mes personnages de jeu de rôle

  20. #60
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2013
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2013
    Messages : 57
    Points : 17
    Points
    17
    Par défaut
    Malgré mon tout petit niveau de programmeur en C, c'est toujours ce raisonnement que je suis. Mais rentrer dans les détails ne fait pas mal et ça me permet mieux comprendre.
    Apparemment, les programmeurs du code que j'ai récupéré ne sont pas aussi friands de ces règles de base

    Bon, je retourne à mon rapport d'erreurs; c'était mes 2min de relaxation sans C (ou presque)

Discussions similaires

  1. Compilation de GEOS sous Visual C++ 2005
    Par figuralegoric dans le forum Visual C++
    Réponses: 1
    Dernier message: 15/09/2009, 21h23
  2. Recuperation date de compilation sous visual c++
    Par semenzato dans le forum MFC
    Réponses: 4
    Dernier message: 20/12/2005, 14h43
  3. Réponses: 7
    Dernier message: 27/09/2005, 21h40
  4. problème de compilation sous visual C++
    Par fabmili dans le forum MFC
    Réponses: 4
    Dernier message: 08/02/2004, 19h52

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