неопределенная ссылка на WinMain@16 (codeblocks)

когда я компилирую свой secrypt.программа cpp, мой компилятор показывает ошибку"undefined reference to WinMain@16". мой код выглядит следующим образом

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";

}

суд.cpp

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

using namespace std;

int main()
{
    void jRegister();

    return 0;
}

вот изображение моей ошибки: errorimage

когда я составляю пробную версию.программа cpp компилирует и открывает консоль, но не вызывает функцию. Вот изображение экрана консоли trial.программа СРР . экран o / p Кто-нибудь может помочь мне решить эту проблему?

6 ответов


когда нет проекта, Code:: Blocks только компилирует и связывает текущий файл. Этот файл, с вашей фотографии,secrypt.cpp, который не имеет основной функции. Чтобы скомпилировать и связать оба исходных файла, вам нужно будет сделать это вручную или добавить их в один проект.

вопреки тому, что говорят другие, используя подсистему Windows с main все равно будет работать, но окна консоли не будет.

ваша другая попытка, компиляция и связывание только trial.cpp, не ссылки secrypt.cpp. Обычно это приводит к неопределенной ссылке на jRegister(), но вы объявили функцию внутри main вместо вызова. Изменить main в:

int main()
{
    jRegister();

    return 0;
}

хорошо, я знаю, что этот ответ не является подходом опытного программиста и старого ИТ-консультанта , но он работал для меня .

ответ: "попробуйте включить и выключить его". перезапуска CodeBlocks и он работает хорошо напоминает мне комедийное шоу 2006 года IT Crowd .


Мне было интересно настроить графику для блоков кода, когда я столкнулся с этой ошибкой: (мне потребовалось 2 часа, чтобы решить ее)

Я думаю, вам нужно немного удачи с этим. В моем случае я просто изменил порядок содержимого в меню настроек - >компилятор и отладчик - >глобальные настройки компилятора - >настройки компоновщика - >другие параметры компоновщика: Рабочая последовательность: - lmingw32 - lSDL - lSDLmain


вы должны создать новый проект в Code:: Blocks и убедиться, что это "консольное приложение".

добавить .cpp файлы в проект, так что они все скомпилированы и связаны вместе.


  1. вам нужно открыть файл проекта вашей программы, и он должен появиться на панели управления.

  2. щелкните правой кнопкой мыши файл проекта, затем выберите Добавить файл. Вы должны добавить исходный код 3 (secrypt.h, secrypt.cpp и суд.cpp)

  3. компилируйте и наслаждайтесь. Хоуп, Я могу тебе помочь.


У меня была такая же проблема с ошибкой, используя блоки кода rev 13.12. Я могу ошибаться здесь, так как я меньше, чем новичок:)

моя проблема заключалась в том, что я случайно написал "M" в Main() вместо всех строчных = main() - после исправления это сработало!!!

Я заметил, что у вас есть" int main () "вместо"main ()". В этом проблема, или так и должно быть?

надеюсь, я смогу помочь...