对WinMain @ 16(codeblocks)的未定义引用

时间:2013-11-16 15:48:26

标签: c++ windows 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 screen 任何人都可以帮我解决这个问题吗?

7 个答案:

答案 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)

  1. 您需要打开程序的项目文件,它应显示在“管理”面板上。

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

  3. 编译并享受。希望,我能帮助你。

答案 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;。这是问题,还是应该是那样的?

希望我能帮忙......