C++ 未定义的引用WinMain@16(代码块)
当我编译secrypt.cpp程序时,我的编译器会显示未定义的错误引用WinMain@16. 我的代码如下 秘书长h:C++ 未定义的引用WinMain@16(代码块),c++,windows,codeblocks,C++,Windows,Codeblocks,当我编译secrypt.cpp程序时,我的编译器会显示未定义的错误引用WinMain@16. 我的代码如下 秘书长h: #ifndef SECRYPT_H #define SECRYPT_H void jRegister(); #endif secrypt.cpp: #include<iostream> #include<string> #include<fstream> #include<cstdlib> #include "secrypt
#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;
}
以下是我的错误图像:
当我编译我的trial.cpp程序时,它编译并打开控制台,但没有调用该函数。以下是trial.cpp程序控制台屏幕的图像。
有人能帮我解决这个问题吗?您应该在Code::Blocks中创建一个新项目,并确保它是“控制台应用程序”
将.cpp文件添加到项目中,以便将它们全部编译并链接在一起。如果没有项目,Code::Blocks只编译并链接当前文件。图片中的文件是secrypt.cpp,它没有主函数。为了编译和链接这两个源文件,您需要手动执行,或者将它们添加到同一个项目中 与其他人所说的相反,使用带有main的Windows子系统仍然可以工作,但是没有控制台窗口 您的另一次尝试是编译和链接just-trial.cpp,而不是链接secrypt.cpp。这通常会导致对jRegister的引用未定义,但您在main中声明了函数,而不是调用它。将main更改为:
我在使用代码块rev 13.12时遇到了同样的错误问题。 我可能错了,因为我还不是初学者: 我的问题是我不小心在Main中将M大写,而不是全部小写=Main-一旦更正,它就起作用了 我注意到你用int main代替main。这就是问题所在,还是应该如此 希望我能帮上忙 您需要打开程序的项目文件,它应该出现在管理面板上 在项目文件上单击鼠标右键,然后选择“添加文件”。您应该添加3个源代码secrypt.h、secrypt.cpp和trial.cpp 编译并享受。希望我能帮助你
我知道这个答案不是一个有经验的程序员的方法,也不是一个老的It顾问的方法,但它对我有用 答案是试着打开和关闭它。 重新启动代码块,它工作正常
让我想起了2006年的喜剧节目It人群。我对设置代码块的图形很感兴趣,但遇到了一个错误:我花了2个小时才解决它 我想你需要有点运气。在我的例子中,我刚刚更改了设置菜单->编译器和调试器->全局编译器设置->链接器设置->其他链接器选项中的内容顺序: 工作顺序为: -lmingw32 -lSDL
-lSDLmain打开要添加的项目 右键单击该名称。 然后选择,添加到激活项目中。
然后cpp文件将获得其到cbp的链接。嘿,我有一个类似的问题,所有文件都在同一个项目中,但它仍然没有将它们编译在一起。这就是我所做的 在左侧面板的“工作区”区域中,可以看到项目名称和其中的文件。 在项目名称上单击鼠标右键,然后单击“重建”。
仅此一点就帮助我重新构建了您的项目。您从未将trial.cpp.compile编译并链接为控制台模式程序。@Max,可能是。它查找GUI程序。它不查找main,而是查找WinMain。将项目属性更改为ConsoleProgram@AlexandreTryHardLeblanc,图中未显示任何项目。WinMain是不需要的,即使它是一个Win32 GUI项目。。。但它显示了错误。未定义对“jRegister”@JefreeSujit的引用,您必须将两个源文件放入同一个项目中,以便它们都链接。或者,自己从命令行编译并链接它们。这是我的第一段。@JefreeSujit,单击“新建项目”,您可能需要一个控制台应用程序项目,将现有文件添加到该项目中,然后生成该项目。更详细的信息可以在C::B wiki上找到。关于如何手动操作的详细信息可以在GCC或您正在使用的任何编译器文档中找到。从OP的帖子中可以清楚地看到,它的main带有小写字母“m”。而且,没有int的主体在C++中只是简单的错误。在C中也不推荐使用+1。乍一看,我认为这是一个很愚蠢的说法,但最终对我来说,重新启动代码块解决了我的问题!在做其他事情之前,您应该先尝试一下:
int main()
{
jRegister();
return 0;
}