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 これを解決するのを手伝ってくれる人はいますか?
プロジェクトがない場合、Code :: Blocksは現在のファイルのコンパイルとリンクのみを行います。あなたの写真からそのファイルは_secrypt.cpp
_であり、メイン関数はありません。両方のソースファイルをコンパイルおよびリンクするには、手動で行うか、同じプロジェクトに追加する必要があります。
他の人が言っていることとは反対に、main
でWindowsサブシステムを使用しても動作しますが、コンソールウィンドウはありません。
_trial.cpp
_だけをコンパイルおよびリンクする他の試みは、_secrypt.cpp
_を決してリンクしません。通常、これはjRegister()
への未定義の参照になりますが、関数を呼び出す代わりに、main
内で関数を宣言しました。 main
を次のように変更します。
_int main()
{
jRegister();
return 0;
}
_
まあ、この答えは経験豊富なプログラマーのアプローチではなく、Old Itコンサルタントのアプローチでもありませんが、私にとってはうまくいきました。
答えは「オンとオフを切り替えてみてください」です。コードブロックを再起動するとうまくいき、2006年のコメディ番組「It Crowd」を思い出します。
このエラーに遭遇したとき、コードブロックのグラフィックを設定することに興味がありました:(解決するのに2時間かかりました)
これには少し運が必要だと思います。私の場合、[設定]メニュー->コンパイラとデバッガー->グローバルコンパイラー設定->リンカー設定->その他のリンカーオプションの内容の順序を変更しました。作業シーケンスは次のとおりです。-lmingw32 -lSDL -lSDLmain
Code :: Blocksで新しいプロジェクトを作成し、それが「コンソールアプリケーション」であることを確認する必要があります。
.cppファイルをプロジェクトに追加して、すべてコンパイルしてリンクするようにします。
プログラムのプロジェクトファイルを開く必要があり、管理パネルに表示されます。
プロジェクトファイルを右クリックして、[ファイルの追加]を選択します。 3つのソースコード(secrypt.h、secrypt.cpp、およびtrial.cpp)を追加する必要があります
コンパイルしてお楽しみください。希望、私はあなたを助けることができる。
追加するプロジェクトを開きます。
名前を右クリックします。次に、アクティブなプロジェクトを選択して追加します。その後、cpp
ファイルはcbp
へのリンクを取得します。