J'ai hérité d'un projet hérité qui utilise certaines fonctions externes d'un fichier * .lib. D'après ce que l'on m'a dit, la syntaxe pour utiliser le fichier * .lib était correcte et ce pouvait être construit dans n'importe quelle version de studio visuel qu'ils utilisaient. (c'est-à-dire, il existe un fichier prototype externe "C", et toutes les signatures de fonctions sont correctes).C++ visual studio, symbole externe non résolu utilisant le fichier .lib
Lors de la construction, je reçois « LNK2019 d'erreur: symbole externe non résolu _A86_ReadConfigReg @ 12 référencé dans la fonction ... »
Je suis assez confiant que cela est lié au fichier * .lib depuis le * .lib le fichier a "A86" dans le nom ... Il y a aussi un * .dll avec le même nom.
Je suis allé aux propriétés du projet -> Lieur -> Entrée et listé le nom du fichier * .lib dans "Dépendances supplémentaires", mais pas de chance. J'ai essayé d'ajouter les répertoires d'inclusion, en copiant le * .lib & * .dll à l'emplacement exécutable. Mais pas de chance.
Comment corriger cette erreur?
Je l'ai fait faire, et la sortie du bac à décharge a une ligne indiquant: "15 A86_ReadConfigReg". Quelle est la prochaine étape? – user2913869
@ user2913869 Vérifiez la réponse mise à jour pour votre problème d'éditeur de liens. –
La convention d'appel était en effet définie sur __cdecl (/ Gd). Comme je l'ai mentionné dans la question d'origine, le fichier d'en-tête a en effet "extern" C "{} et tous les prototypes de fonction listés entre parenthèses.Je vois que le prototype est défini de la façon suivante: int _stdcall A86_ReadConfigReg (int iHandle, DWORD dwOffset, DWORD * pdwResult); J'ai donc aussi essayé de changer le libellé "_stdcall" en "__cdecl", puis je l'ai complètement supprimé, mais il ne serait toujours pas construit – user2913869