当我编译我的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 任何人都可以帮我解决这个问题吗?
答案 0 :(得分:9)
当没有项目时,Code :: Blocks仅编译并链接当前文件。您的图片中的该文件为secrypt.cpp
,其中没有主要功能。为了编译和链接两个源文件,您需要手动完成或将它们添加到同一个项目中。
与其他人的说法相反,使用带有main
的Windows子系统仍然有效,但没有控制台窗口。
您的其他尝试,仅编译和链接trial.cpp
,从不链接secrypt.cpp
。这通常会导致对jRegister()
的未定义引用,但您已在main
内声明了该函数,而不是调用它。将main
更改为:
int main()
{
jRegister();
return 0;
}
答案 1 :(得分:2)
嗯,我知道这个答案不是一个经验丰富的程序员的方法,也不是Old It的顾问,但它对我有用。
答案是“尝试开启和关闭”。 重启代码块,效果很好 让我想起2006年喜剧节目It Crowd。
答案 2 :(得分:0)
您应该在Code :: Blocks中创建一个新项目,并确保它是'Console Application'。
将.cpp文件添加到项目中,以便将它们全部编译并链接在一起。
答案 3 :(得分:0)
您需要打开程序的项目文件,它应显示在“管理”面板上。
右键单击项目文件,然后选择添加文件。你应该添加3个源代码(secrypt.h,secrypt.cpp和trial.cpp)
编译并享受。希望,我能帮助你。
答案 4 :(得分:0)
打开要添加的项目。
右键单击名称。
然后选择,添加活动项目。
然后cpp
文件将获得指向cbp
的链接。
答案 5 :(得分:0)
嘿,我遇到了类似的问题,所有文件都在同一个项目中,但仍然没有将它们编译在一起。这是我所做的
在左侧面板的工作区区域中,您可以看到您的项目名称和其中的文件。 右键单击项目名称并点击重建。 仅此一项就帮助了我,重建从头开始再次构建您的项目。
答案 6 :(得分:-3)
使用Code Blocks rev 13.12我遇到了同样的错误问题。 我可能在这里错了,因为我不是初学者:)
我的问题是我不小心将资本化了#34; M&#34;在Main()而不是ALL lowercase = main() - 一旦纠正,它就工作了!!!
我注意到你有&#34; int main()&#34;而不是&#34; main()&#34;。这是问题,还是应该是那样的?
希望我能帮忙......