c++ c linker iostream

c++ - error de iostream linker



(3)

Tengo un viejo código C que me gustaría combinar con algún código C ++.

El código C que solía tener tiene lo siguiente incluye:

#include <windows.h> #include <stdio.h> #include <string.h> #include "mysql.h"

Ahora estoy tratando de hacer que use C ++ con iostream así:

#include <windows.h> #include <stdio.h> #include <string> #include <iostream> #include "mysql.h"

Pero sigo recibiendo los siguientes errores de enlazador cuando compilo:

[Error de enlazador] referencia indefinida a `std :: string :: size () const ''

[Error de enlazador] referencia indefinida a `std :: string :: operator [] (unsigned int) const ''

[Error de enlazador] referencia indefinida a `std :: string :: operator [] (unsigned int) const ''

[Error de enlazador] referencia indefinida a `std :: string :: operator [] (unsigned int) const ''

[Error de enlazador] referencia indefinida a `std :: ios_base :: Init :: Init () ''

[Error de enlazador] referencia indefinida a `std :: ios_base :: Init :: ~ Init () ''

LD devolvió el código de salida 1

¿Cómo resuelvo esto?

Editar: mi compilador es Dev-C ++ 4.9.9.2


Debes enlazar con tu tiempo de ejecución de C ++. Depende de su plataforma y compilador, pero agregar -lC a su línea de enlace podría hacerlo.

Entonces podría vincular el uso de su compilador C ++ en lugar de ld.

En cualquier caso, probablemente tenga que vincular usando el compilador C ++ en lugar de ld si desea que su código C ++ funcione correctamente; a menudo se requiere que las excepciones y los inicializadores estáticos funcionen correctamente ...


El encabezado C string.h y el encabezado de string C ++ no son intercambiables.

En general, sin embargo, su problema es que el archivo se compila correctamente, pero la biblioteca de tiempo de ejecución incorrecta se está vinculando.

Dev-C ++ usa GCC. GCC puede determinar correctamente el idioma en un archivo basado en la extensión de archivo, pero no enlazará la biblioteca de tiempo de ejecución correcta a menos que específicamente lo solicite (-lstdc ++ en la línea de comandos). Llamar a GCC como "g ++" (o, en su caso, "mingwin32-g ++") también obtendrá el idioma correcto y vinculará la biblioteca necesaria.


Obtuve el mismo error exacto cuando estaba tratando de compilar con Cygwin (g ++).

simplemente agregue -L/usr/local/bin -L/usr/lib en las reglas de compilación y debería funcionar.

Esto puede ser específico de Cygwin, pero también podría ayudar a resolver su problema.