未定义的引用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"; } 

trial.cpp

 #include<iostream> #include "secrypt.h" using namespace std; int main() { void jRegister(); return 0; } 

这是我的错误形象: errorimage

当我编译我的trial.cpp程序时,编译并打开控制台,但没有调用该函数。 这是trial.cpp程序的控制台屏幕的图像。 o / p屏幕任何人都可以帮我解决这个问题吗?

Solutions Collecting From Web of "未定义的引用WinMain @ 16(codeblocks)"

当没有项目时,Code :: Blocks只编译和链接当前文件。 这个文件,从你的图片,是secrypt.cpp ,没有一个主要的功能。 为了编译和链接两个源文件,您需要手动执行或将其添加到同一个项目中。

与其他人所说的相反,使用主子系统的Windows子系统仍然有效,但是没有控制台窗口。

你的另一个尝试,编译和链接只是trial.cpp ,从来没有链接secrypt.cpp 。 这通常会导致对jRegister()的未定义引用,但是您已经在main声明了该函数,而不是调用它。 将main更改为:

 int main() { jRegister(); return 0; } 

那么我知道这个答案不是一个有经验的程序员的方法,也不是一个老顾问,但它对我有用。

答案是“试着开启和关闭”。 重新启动codeblocks,它的作品让我想起了2006年喜剧节目人群。

您应该在Code :: Blocks中创建一个新项目,并确保它是“控制台应用程序”。

将.cpp文件添加到项目中,以便将它们全部编译并链接在一起。

  1. 您需要打开您的程序的项目文件,它应该出现在管理面板上。

  2. 右键单击项目文件,然后选择添加文件。 您应该添加3个源代码(secrypt.h,secrypt.cpp和trial.cpp)

  3. 编译和享受。 希望,我可以帮助你。

当我遇到这个错误时,我有兴趣为代码块设置图形:(花了我2个小时来解决它)

我想你需要有一点运气。 在我的情况下,我只是改变了设置菜单中的内容的顺序 – >编译器和调试器 – >全局编译器设置 – >链接器设置 – >其他链接器选项:工作顺序是:-lmingw32 -lSDL -lSDLmain

我使用代码块修订13.12有同样的错误问题。 我可能是错误的,因为我不够初学者:)

我的问题是,我不小心大写“M”Main()而不是所有小写= main() – 一旦纠正,它的工作!

我注意到你有“int main()”而不是“main()”。 这是问题,还是应该是这样?

希望我能帮助…