Lors de la compilation d'un projet SDL2 dans Visual Studio 2015, les développeurs peuvent rencontrer des symboles externes non résolus __imp__fprintf et __imp____iob_func.
Le problème sous-jacent vient du fait que Visual Studio 2015 définit stdin, stderr et stdout différemment des versions précédentes. Dans les anciennes versions de Visual Studio, celles-ci étaient définies comme des macros pointant vers des tableaux contenant les trois flux d'E/S standard. Cependant, dans Visual Studio 2015, ils sont définis à l'aide de __acrt_iob_func().
Par conséquent, le code compilé avec les versions précédentes de Visual Studio qui s'appuie sur les anciennes définitions de stdin, stderr et stdout rencontrera une référence non définie. à __iob_func() lors de la liaison avec une bibliothèque (.lib) compilée avec Visual Studio 2015.
Pour résoudre Au problème, une solution consiste à définir manuellement __iob_func() comme un tableau contenant {stdin, stdout, *stderr}. Cela garantit que le code a la référence nécessaire à __iob_func().
De plus, tout code utilisant des fonctions stdio (par exemple, scanf, printf) peut également rencontrer des symboles externes non résolus. Pour résoudre ce problème, les développeurs peuvent ajouter le fichier Legacy_stdio_definitions.lib à leurs options d'éditeur de liens. Cette bibliothèque fournit des définitions pour les fonctions stdio manquantes.
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!