web-dev-qa-db-ja.com

WinMain @ 16(コードブロック)への未定義の参照

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

ここに私のエラーの画像があります: errorimage

Trial.cppプログラムをコンパイルすると、コンソールがコンパイルされて開きますが、関数は呼び出されませんでした。以下は、trial.cppプログラムのコンソール画面の画像です。 o/p screen これを解決するのを手伝ってくれる人はいますか?

10
Jefree Sujit

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

他の人が言っていることとは反対に、mainでWindowsサブシステムを使用しても動作しますが、コンソールウィンドウはありません。

_trial.cpp_だけをコンパイルおよびリンクする他の試みは、_secrypt.cpp_を決してリンクしません。通常、これはjRegister()への未定義の参照になりますが、関数を呼び出す代わりに、main内で関数を宣言しました。 mainを次のように変更します。

_int main()
{
    jRegister();

    return 0;
}
_
10
chris

まあ、この答えは経験豊富なプログラマーのアプローチではなく、Old Itコンサルタントのアプローチでもありませんが、私にとってはうまくいきました。

答えは「オンとオフを切り替えてみてください」です。コードブロックを再起動するとうまくいき、2006年のコメディ番組「It Crowd」を思い出します。

2
Sourab Reddy

このエラーに遭遇したとき、コードブロックのグラフィックを設定することに興味がありました:(解決するのに2時間かかりました)

これには少し運が必要だと思います。私の場合、[設定]メニュー->コンパイラとデバッガー->グローバルコンパイラー設定->リンカー設定->その他のリンカーオプションの内容の順序を変更しました。作業シーケンスは次のとおりです。-lmingw32 -lSDL -lSDLmain

2
shanmuga

Code :: Blocksで新しいプロジェクトを作成し、それが「コンソールアプリケーション」であることを確認する必要があります。

.cppファイルをプロジェクトに追加して、すべてコンパイルしてリンクするようにします。

0
nullptr
  1. プログラムのプロジェクトファイルを開く必要があり、管理パネルに表示されます。

  2. プロジェクトファイルを右クリックして、[ファイルの追加]を選択します。 3つのソースコード(secrypt.h、secrypt.cpp、およびtrial.cpp)を追加する必要があります

  3. コンパイルしてお楽しみください。希望、私はあなたを助けることができる。

0
Mockingjay

追加するプロジェクトを開きます。

名前を右クリックします。次に、アクティブなプロジェクトを選択して追加します。その後、cppファイルはcbpへのリンクを取得します。

0