web-dev-qa-db-fra.com

référence non définie à WinMain @ 16 (codeblocks)

Lorsque je compile mon programme secrypt.cpp, mon compilateur affiche l'erreur "undefined reference to WinMain@16" . Mon code est le suivant

secrypt.h:

#ifndef SECRYPT_H
#define SECRYPT_H

void jRegister();

#endif

secrypt.cpp:

#include<iostream>
#include<string>
#include<fstream>
#include<cstdlib>
#include "secrypt.h"

using namespace std;

void jRegister()
{
    ofstream outRegister( "useraccount.dat", ios::out );
    if ( !outRegister    ) {
    cerr << "File could not be opened" << endl;
    exit( 1 );}
    string a,b,c,d;
    cout<<"enter your username :";
    cin>>a;
    cout<<"enter your password :";
    cin>>b;
    outRegister<<a<<' '<<b<<endl;
    cout<<"your account has been created";

}

trial.cpp

#include<iostream>
#include "secrypt.h"

using namespace std;

int main()
{
    void jRegister();

    return 0;
}

Voici l'image de mon erreur: errorimage

Lorsque je compile mon programme trial.cpp, il compile et ouvre la console, mais n'appelle pas la fonction. Voici l'image de l'écran de la console du programme trial.cpp . o/p screen Quelqu'un peut-il m'aider à résoudre ce problème?

8
Jefree Sujit

Lorsqu'il n'y a pas de projet, Code :: Blocks compile et lie uniquement le fichier actuel. Ce fichier, à partir de votre image, est secrypt.cpp, qui n’a pas de fonction principale. Afin de compiler et de lier les deux fichiers source, vous devez le faire manuellement ou les ajouter au même projet. 

Contrairement à ce que disent d'autres personnes, l'utilisation d'un sous-système Windows avec main fonctionnera toujours, mais il n'y aura pas de fenêtre de console.

Votre autre tentative, en compilant et en liant juste trial.cpp, ne lie jamais secrypt.cpp. Cela entraînerait normalement une référence non définie à jRegister(), mais vous avez déclaré la fonction dans main au lieu de l'appeler. Remplacez main par:

int main()
{
    jRegister();

    return 0;
}
9
chris

Eh bien, je sais que cette réponse n’est pas une approche de programmeur expérimenté ni celle d’un consultant Old It, mais elle a fonctionné pour moi.

la réponse est "ESSAYEZ DE L'ACTIVER ET DE LE DÉSACTIVER" . redémarrez codeblocks et cela fonctionne bien me rappelle l'émission de comédie de 2006 It Crowd.

2
Sourab Reddy

La configuration des graphiques pour les blocs de code m'intéressait lorsque j'ai rencontré cette erreur: (il m'a fallu 2 heures pour la résoudre)

Je suppose que vous devez avoir un peu de chance avec ça. Dans mon cas, je viens de changer l'ordre du contenu dans le menu Paramètres-> Compilateur et débogueur-> Paramètres globaux du compilateur-> Paramètres du lieur-> Autres options du lieur: La séquence de travail est la suivante: - lmingw32 - lSDL - lSDLmain

1
shanmuga

Vous devriez créer un nouveau projet dans Code :: Blocks et assurez-vous qu'il s'agit de 'Console Application'.

Ajoutez vos fichiers .cpp au projet afin qu’ils soient tous compilés et liés entre eux.

0
Inspired
  1. Vous devez ouvrir le fichier de projet de votre programme et il devrait apparaître sur le panneau de gestion.

  2. Faites un clic droit sur le fichier du projet, puis sélectionnez Ajouter un fichier. Vous devez ajouter le code source 3 (secrypt.h, secrypt.cpp et trial.cpp)

  3. Compiler et profiter. J'espère pouvoir vous aider.

0
Mockingjay

Ouvrez le projet que vous souhaitez ajouter.

Faites un clic droit sur le nom . Ensuite, sélectionnez, ajoutez dans le projet actif . Ensuite, le fichier cpp aura son lien à cbp.

0
Towsif Ahmed Labib