当我编译我的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屏幕任何人都可以帮我解决这个问题吗?
当没有项目时,Code :: Blocks只编译和链接当前文件。 这个文件,从你的图片,是secrypt.cpp
,没有一个主要的功能。 为了编译和链接两个源文件,您需要手动执行或将其添加到同一个项目中。
与其他人所说的相反,使用主子系统的Windows子系统仍然有效,但是没有控制台窗口。
你的另一个尝试,编译和链接只是trial.cpp
,从来没有链接secrypt.cpp
。 这通常会导致对jRegister()
的未定义引用,但是您已经在main
声明了该函数,而不是调用它。 将main
更改为:
int main() { jRegister(); return 0; }
那么我知道这个答案不是一个有经验的程序员的方法,也不是一个老顾问,但它对我有用。
答案是“试着开启和关闭”。 重新启动codeblocks,它的作品让我想起了2006年喜剧节目人群。
您应该在Code :: Blocks中创建一个新项目,并确保它是“控制台应用程序”。
将.cpp文件添加到项目中,以便将它们全部编译并链接在一起。
您需要打开您的程序的项目文件,它应该出现在管理面板上。
右键单击项目文件,然后选择添加文件。 您应该添加3个源代码(secrypt.h,secrypt.cpp和trial.cpp)
编译和享受。 希望,我可以帮助你。
当我遇到这个错误时,我有兴趣为代码块设置图形:(花了我2个小时来解决它)
我想你需要有一点运气。 在我的情况下,我只是改变了设置菜单中的内容的顺序 – >编译器和调试器 – >全局编译器设置 – >链接器设置 – >其他链接器选项:工作顺序是:-lmingw32 -lSDL -lSDLmain
我使用代码块修订13.12有同样的错误问题。 我可能是错误的,因为我不够初学者:)
我的问题是,我不小心大写“M”Main()而不是所有小写= main() – 一旦纠正,它的工作!
我注意到你有“int main()”而不是“main()”。 这是问题,还是应该是这样?
希望我能帮助…