símbolo referencia que lnk2001 hace función externo error c++ visual-studio-2015

c++ - referencia - error lnk2001 símbolo externo sin resolver



C++: símbolo externo sin resolver_sprintf y_sscanf en Visual Studio 2015 (2)

Agregue la siguiente biblioteca a los archivos de entrada del enlazador:

legacy_stdio_definitions.lib

VS 2015 ahora usa definiciones en línea que llaman funciones internas para muchas de las funciones stdio.h . Si un archivo objeto (o miembro de la biblioteca) depende de una de esas funciones, legacy_stdio_definitions.lib proporciona una versión externamente enlazable de la función a la que se puede vincular.

Su otra opción es recompilar la unidad que depende de esas funciones con VS 2015 (esta es probablemente la opción preferida).

Para un proyecto de investigación, estoy escribiendo un complemento de C ++ para un lenguaje informático científico. Lamentablemente, la biblioteca que permite a los usuarios hacer esto no se mantiene muy actualizada.

Inicié el proyecto en XCode, donde funciona bien. Más tarde tuve que pasar a una PC, por lo que migré el código a Visual Studio 2015. Desde que hice esto, no he podido compilar debido a los siguientes errores:

LNK2001 : unresolved external symbol _sprintf LNK2019 : unresolved external symbol _sscanf referenced in function _GetDDouble LNK2019 : unresolved external symbol _sprintf referenced in function _CheckRunningInMainThread

Un intento de solución fue agregar el encabezado #define _CRT_SECURE_NO_WARNINGS . Sin embargo, esto a) no corrigió errores yb) agregó la advertencia C4005 : ''_CRT_SECURE_NO_WARNINGS'': macro redefinition . Supongo que la biblioteca ya definió esta macro, anticipándose a este problema. De todos modos, no resolvió el problema.

¿Cómo debo proceder?


Obtuve este error compilando complementos de ciclismo máximo contra la versión 5 max sdk (pure c api). La corrección de la biblioteca heredada no me funcionaba (debería haberlo hecho, y si alguien tenía alguna idea de por qué no sería curioso), pero definí _NO_CRT_STDIO_INLINE antes de que se cargara stdio, y eso sí funcionó.