Pregunta

Aunque la construcción de varios proyectos diferentes en QtCreator, me he encontrado con el siguiente error de compilación:

collect2: ld returned 1 exit status

Después de sólo cambiar algunas cosas (que no hay que cambiar nada significativo en la construcción), que va a desaparecer si ya ha aparecido, o que aparecerá si no está ahí.

En mi programa actual para un proyecto escolar, que estoy tratando de recopilar rock03.cpp. Es el único archivo en la construcción, y tiene el método main (). Yo acababa de ejecutar con éxito, y volvió a cambiar el orden de algunas if()s, ahora, me sale solo dos advertencias pertinentes:

overriding commands for target 'rock03.o'

y

ignoring old commands for target 'rock03.o'

junto con el error en cuestión.

¿Alguien sabe por qué esto iba a pasar? Me parece que no puede reproducir el error con certeza razonable, y QtCreator no se queja acerca de cualquier cosa antes de construir.

Gracias

¿Fue útil?

Solución 10

Comprobación del panel de "recopilar la producción" revela que el archivo .pro estaba tratando de vincular el mismo archivo .cpp dos veces.

Otros consejos

Si el único error mensaje es éste en relación con enlazador, la razón puede ser que su programa aún está en marcha y el enlazador no puede acceder al archivo binario. Asegúrese de que su aplicación se ha detenido o matarlo si aún en marcha. QtCreator nunca se comprueba si ejecución anterior se detuvo antes de compilar.

Esto me pasa porque hago una declaración en el archivo de cabecera, a continuación, eliminar la función en el archivo CPP y olvido para borrar el decleration en la cabecera. Por ejemplo ...

 //header file
class CLASS : public Q_OBJECT
{
...
protected:
void mouseMoveEvent(QMouseEvent*);
}

//source file

void CLASS::mouseMoveEvent(QMouseEvent*e)
{
...
}
    //I'll delete this, then forget to delete "void mouseMoveEvent(QMouseEvent*);" in the header file

La salida del compilador es realmente útil si sólo está recibiendo esto como un error, pero el primer candidato es probable que todavía tienes el programa de salida abierta, y no se puede escribir en el archivo, ya que' ll le dará un error de collect2 solitario como éste

Este error también puede ocurrir debido a problemas con la vinculación, por ejemplo, que se olvidó de declarar algunas variables estáticas de archivo de cabecera directiva using 'externo'.

Esto sucede cuando usted no cierra su aplicación principal (por lo que el ejecutable de salida sigue funcionando, pero sin ninguna ventana visible). Un ejemplo:

int main() {
    QApplication a(argc, argv);
    MainWindow w;
    w.show();
    return a.exec();
}

Esta aplicación termina bien cuando se cierra la ventana principal, pero este código

int main() {
    QApplication a(argc, argv);
    QDialog w;
    w.exec();
    return a.exec();
}

no cerrar la aplicación cuando se cierra el cuadro de diálogo (al menos para mí).

Una solución es crear siempre la ventana principal y asegúrese de que lo cierre.

En mi caso estaba declarando la función virtual clara.

void virtual Func(MouseEvent*); // Error.
void virtual Func(MouseEvent*) = 0; // Well!

En mi caso, los permisos de carpetas eran el problema. Verificación de la "Salida Compilar" ventana es crucial para averiguar cuál es exactamente el problema. (QtCreator es lo contrario de Visual Studio en ese sentido, por lo que se necesita algún tiempo para acostumbrarse.) He intentado establecer el permisos correctamente, pero después de eso no se parecía a trabajar, al final me desactivan acumulación sombra y luego fueron a "Herramientas / Opciones / construir y Ejecutar / general / Proyectos Directorio" y ajuste "Directorio" a "". Entonces finalmente compilado. "Es" es el proyecto kmap2qmap en Qt 5.11.

Sólo mis 2 centavos en caso de que alguien podrían serle útiles.

Podría haber muchas más razones para el error. Pero para mí, en la eliminación de las ranuras no utilizadas de la clase se resolvió el problema.

Yo tenía el mismo problema. Mi resolución es -. Implementar todas las funciones virtuales y todas las declaraciones de tragamonedas

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top