Maison >développement back-end >C++ >Pourquoi est-ce que je reçois des symboles externes non résolus __imp__fprintf et __imp____iob_func avec SDL2 ?

Pourquoi est-ce que je reçois des symboles externes non résolus __imp__fprintf et __imp____iob_func avec SDL2 ?

Linda Hamilton
Linda Hamiltonoriginal
2024-11-28 15:50:15662parcourir

Why Am I Getting Unresolved External Symbols __imp__fprintf and __imp____iob_func with SDL2?

Symboles externes non résolus : __imp__fprintf et __imp____iob_func avec SDL2

En programmation, la rencontre de symboles externes non résolus est un problème courant qui se manifeste par des erreurs de liaison. Deux symboles spécifiques qui provoquent fréquemment de telles erreurs avec SDL2 sont __imp__fprintf et __imp____iob_func.

Le symbole externe non résolu __imp__fprintf apparaît car fprintf, qui est utilisé pour l'impression formatée, se trouve dans une bibliothèque de liens dynamiques (DLL). Les compilateurs établissent généralement des liens vers ces bibliothèques au moment de l'exécution, mais parfois l'éditeur de liens ne parvient pas à trouver la DLL appropriée. Cela peut se produire lorsque la DLL n'est pas présente dans le chemin du système ou lorsqu'une mauvaise version est liée.

Le symbole externe non résolu __imp____iob_func, en revanche, est lié à l'entrée/sortie standard du C (E/S ) fonctions. En particulier, Visual Studio 2015 a introduit des modifications dans la définition des fonctions d'E/S telles que stdin, stdout et stderr. Ces fonctions sont désormais définies à l'aide de __acrt_iob_func, alors que dans les versions précédentes, elles étaient définies à l'aide de __iob_func. Cela peut provoquer des erreurs de liaison lors de l'utilisation de bibliothèques ou de code compilé avec des versions antérieures de Visual Studio.

Pour résoudre ces erreurs de symboles externes non résolues, vous pouvez suivre les étapes suivantes :

  • Assurez-vous que les DLL nécessaires, telles que msvcrt.dll pour __imp__fprintf, sont présentes dans le chemin d'accès système.
  • Vérifiez que vous êtes lien vers la version correcte des bibliothèques et des DLL SDL2.
  • Si __imp____iob_func est le coupable, définissez vous-même __iob_func dans votre code pour renvoyer un tableau contenant {stdin,stdout,*stderr}.
  • Pour résoudre les erreurs avec d'autres fonctions stdio, ajoutez Legacy_stdio_definitions.lib aux options de l'éditeur de liens.

En suivant ces étapes, vous pouvez résoudre efficacement les erreurs de symboles externes non résolues liées à __imp__fprintf et __imp____iob_func lorsque vous travaillez avec SDL2 dans Visual Studio 2015.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn