Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 未定义的引用WinMain@16(代码块)_C++_Windows_Codeblocks - Fatal编程技术网

C++ 未定义的引用WinMain@16(代码块)

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

当我编译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.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;
}