1. ホーム
  2. c++

[解決済み】WinMain@16への未定義参照(codeblocks)

2022-02-03 16:43:27

質問

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

}

trial.cpp

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

using namespace std;

int main()
{
    void jRegister();

    return 0;
}

以下は、私のエラーの画像です。 エラー画像

trial.cppをコンパイルすると、コンソールは開くのですが、関数が呼び出されません。以下は、trial.cppプログラムのコンソール画面の画像です。 画面 どなたか、この問題を解決する手助けをしていただけませんか?

解決方法は?

プロジェクトがない場合、Code::Blocksは現在のファイルのみをコンパイル、リンクします。そのファイルは、あなたの写真からすると secrypt.cpp メイン関数を持たない。両方のソースファイルをコンパイル・リンクするためには、手動で行うか、同じプロジェクトに追加する必要があります。

他の人が言っているのとは逆に、Windows のサブシステムに main は動作しますが、コンソールウィンドウは表示されません。

もう一つの試みは、コンパイルとリンクが trial.cpp はリンクされません。 secrypt.cpp . この場合、通常は jRegister() しかし、あなたはこの関数を main を呼び出すのではありません。変更 main に変更します。

int main()
{
    jRegister();

    return 0;
}