Non résolu ___stdio_commune_vsprintf_ _ s, ce que la bibliothèque a cela?
Je suis en utilisant VS2015 de la Communauté. J'ai obtenu le code C que je suis en train de construire. Il est tout en C et j'ai fait un projet comme une Application Console.
Quand je build-je obtenir le dessous des erreurs. Le problème est qu' __stdio_commune_vsprintf_s ne peut pas être trouvé pendant le processus de liaison. J'ai donc cherché sur internet pour les symboles, mais ne pas obtenir toute information utile.
Je suis l'aide de la Bibliothèque d'Exécution de réglage Multi-thread (/MT).
J'ai essayé d'ajouter #define STDC_WANT_LIB_EXT1 1 avant tout inclut, mais qui n'a pas aidé. J'ai cherché pour ce problème et n'ont pas trouvé d'offres d'aide.
J'ai donc cherché à toutes les VS bibliothèques et j'ai reçu beaucoup de coups, mais je ne sais pas qui sont les définitions et les références. Ensuite, j'ai cherché tous les de la .h les fichiers dans le VS inclure le dossier, mais pas de hits.
Je pense qu'il y peut-être une autre bibliothèque que j'ai besoin, mais vous ne savez pas ce que c'est. Quelqu'un a une idée?
1>LIBCMT.lib(_error_.obj) : error LNK2019: unresolved external symbol ___stdio_common_vsprintf_s referenced in function __vsprintf_s_l
1>LIBCMT.lib(_pdblkup_.obj) : error LNK2019: unresolved external symbol ___vcrt_GetModuleFileNameW referenced in function "int __cdecl _RTC_GetSrcLine(unsigned char *,wchar_t *,unsigned long,int *,wchar_t *,unsigned long)" (?_RTC_GetSrcLine@@YAHPAEPA_WKPAH1K@Z)
1>LIBCMT.lib(_pdblkup_.obj) : error LNK2019: unresolved external symbol ___vcrt_LoadLibraryExW referenced in function "struct HINSTANCE__ * __cdecl GetPdbDllFromInstallPath(void)" (?GetPdbDllFromInstallPath@@YAPAUHINSTANCE__@@XZ)
1>MSVCRTD.lib(_chandler4gs_.obj) : error LNK2019: unresolved external symbol __except_handler4_common referenced in function __except_handler4
1>W:\efifs\Debug\testing.exe : fatal error LNK1120: 6 unresolved externals
Ici sont mes options:
Compile
----------
/GS
/analyze-
/W3
/Zc:wchar_t
/I"W:\efifs\\gnu-efi\inc"
/I"W:\efifs\\gnu-efi\inc\ia32"
/I"W:\efifs\\grub\include"
/I"W:\efifs\\grub-core\lib\minilzo"
/I"W:\efifs\testing\"
/I"W:\efifs\\gnu-efi\inc\protocol"
/I"W:\efifs\\gnu-efi\lib"
/I"W:\efifs\\include"
/I"W:\efifs\\grub\grub-core\lib\minilzo"
/I"W:\efifs\.msvc"
/ZI
/Gm
/Od
/Fd"Debug\vc140.pdb"
/Zc:inline
/fp:precise
/D "__STDC_WANT_LIB_EXT1__=1"
/D "_UNICODE"
/D "UNICODE"
/D "GRUB_FILE=__FILE__"
/D "HAVE_USE_MS_ABI"
/D "GNU_EFI_USE_EXTERNAL_STDARG"
/D "DRIVERNAME=testing"
/D "WIN32"
/D "_DEBUG"
/D "_CONSOLE"
/errorReport:prompt
/WX-
/Zc:forScope
/RTC1
/Gd
/Oy-
/MT
/Fa"Debug\"
/EHsc
/nologo
/Fo"Debug\"
/Fp"Debug\testing.pch"
Link
-----
/OUT:"W:\efifs\Debug\testing.exe"
/MANIFEST
/NXCOMPAT
/PDB:"W:\efifs\Debug\testing.pdb"
/DYNAMICBASE "efifs.lib" "grub.lib" "gnu-efi.lib" "kernel32.lib" "user32.lib" "gdi32.lib" "winspool.lib" "comdlg32.lib" "advapi32.lib" "shell32.lib" "ole32.lib" "oleaut32.lib" "uuid.lib" "odbc32.lib" "odbccp32.lib"
/MACHINE:X86
/INCREMENTAL
/PGD:"W:\efifs\Debug\testing.pgd"
/SUBSYSTEM:CONSOLE
/MANIFESTUAC:"level='asInvoker' uiAccess='false'"
/ManifestFile:"Debug\testing.exe.intermediate.manifest"
/ERRORREPORT:PROMPT
/NOLOGO
/LIBPATH:"W:\efifs\testing\\grub"
/LIBPATH:"W:\efifs\testing\\efifs"
/LIBPATH:"W:\efifs\testing\\gnu-efi"
/TLBID:1
- Avez-vous ajouter
#define __STDC_WANT_LIB_EXT1__ 1
avant, y compris les en-têtes? - Depuis quand sont les messages compilateur de ne pas illisible gâchis? Pas la faute de l'affiche.
- Ceux-ci semblent être sur plusieurs lignes. Et partiels, de gras à cause d'un mauvais formatage de ne pas le rendre plus lisible soit. L'utilisateur est ici pour >1 an et devrait le savoir.
- Oui, mais cela n'a pas aidé.
- Si vous essayez de construire un EFI exécutable que vous ne pouvez pas le lien avec Visual C++ runtime à tous. Il prend en charge uniquement les exécutables Windows.
- L'idée de ce code est de simuler EFI par écrit les stubs pour chaque EFI fonction. Peut-être il ya quelque chose dans les includes qui sont à l'origine de cette erreur. Je vais faire plus de contrôles.
- Quiconque vers le bas voté à ma question ... j'ai fait des recherches de ce autant que possible avant de poser la question. C'est une question légitime. Merci de nous donner la raison pour laquelle vous vers le bas voté il. Si c'était tout simplement la mise en forme, je ne savais pas que Stackoverflow serait de squash ma pâte ... depuis, j'ai corrigé ça. Vous s'il vous plaît supprimer votre vote?
Vous devez vous connecter pour publier un commentaire.
Si vous regardez comment vsprintf est déclarée, vous pouvez le tracer corecrt_stdio ... où il est dit de l'inclure.
J'ai eu quelques anciens DLL qui ont été de se lier à des vieux msvcrt et j'essaie de l'importer vsprintf, mais semble comme VS2015 ont de nouveaux en-têtes et d'essayer de l'inclure.
Réglage _NO_CRT_STDIO_INLINE aidé à le résoudre, en Profiter.
Edit: Aussi https://msdn.microsoft.com/en-us/library/bb531344.aspx
Vous configuration semble être incorrect. Vous ne semblez pas être en liaison avec un couple de nouvelles bibliothèques ajouté dans Visual Studio 2015 de la réorganisation de la bibliothèque runtime C. Vous aussi apparaître des liaisons avec la version statique (/MT) et DLL de débogage (/MDd) version de la même bibliothèque, spécifiquement
LIBCMT.lib
etMSVCRTD.lib
.Le symbole
___stdio_common_vsprintf_s
peut être trouvé dans l'Universelle CRT qui fait partie de Windows 10 SDK. La version version statique de la bibliothèque est appeléelibucrt.lib
. Les autres symboles non résolus sont partie de la "vcruntime" de la bibliothèque qui fait partie de Visual Studio 2015. Le nom de la libération version statique estlibvcruntime.lib.
Il ne sait pas pourquoi vous n'êtes pas le lien avec les bibliothèques appropriées. Normalement, ce gérée automatiquement pour vous. Vous aurez besoin de vérifier pour votre projet de paramètres de configuration pour voir où vous avez remplacé le comportement par défaut.
Selon la norme de l'annexe K
Ce sens que, pour utiliser le "_s" fonctions telles que
vsprintf_s
, qui figurent tous dans le mentionné à l'annexe, vous devez définir cette macro à une valeur autre que 0, avant d'inclure les fichiers d'en-tête.Je soupçonne que vous devez avoir un C11 compilateur. Si oui ou non Visual Studio ensuit que la norme, je n'ai aucune idée. Il est tristement célèbre pour ses pauvres conformité aux standards.