未定义对WinMain的引用,[错误]返回1的退出状态

4

我在这里搞砸了什么?代码中不能有硬编码的值,这就是为什么我的所有提示都是常量。我们还必须调用用户定义的函数来验证输入。

当我编译时,出现以下错误--undefined reference to WinMain,[Error] Id returned 1 exit status。我正在使用Dev C++作为IDE。

#include <iostream> //for I/O
#include <iomanip> //for formatting output

using namespace std;


const string PROGRAM_DESCRIPTION = "Program will calculate the amount "
"accumulated every month you save, \nuntil you reach your goal. ";
const string ENTER_DOLLAR_AMOUNT_MONTHLY = "Enter the dollar amount to be "
"saved each month: ";




int main()
{
    double dollarSavedPerMonth; 


    //displays program description
    cout << PROGRAM_DESCRIPTION << endl << endl;

    //Prompts user to enter dollar amount to be saved monthly, will validate
    //input by calling VerifyDollar
    dollarSavedPerMonth = VerifyDollar(ENTER_DOLLAR_AMOUNT_MONTHLY);
    cout << endl;



    return 0;
}




double VerifyDollar (string Prompt)
{
    const string INVALID_DOLLAR_AMOUNT = "Invalid amount, re-enter monthly "
    "savings amount.";
    double dollarSaved;

    cout << Prompt;
    cin >> dollarSaved;

    while (dollarSaved < 5 || dollarSaved > 5000)
    {
          cout << INVALID_DOLLAR_AMOUNT;
          cout << endl;
          cout << Prompt;
          cin >> dollarSaved;
    }
    return dollarSaved;
}

2
注意:当使用 std::string 时,请包含 <string> 头文件。在任何情况下,由于在声明之前使用了 VerifyDollar,因此即使到了链接部分,也不应该出现链接器错误。 - chris
你使用的是多目标IDE吗?我猜测项目设置可能有误。 - jerry
由于函数在主函数之后定义,因此添加了原型。 - Jessica
这个回答解决了你的问题吗?undefined reference to `WinMain@16' - VLL
1个回答

7

你的代码中确实没有任何WinMain()函数。

如果我没记错,WinMain()是Win32 GUI应用程序的入口点。我假设你的IDE要求你选择某种“项目类型”,而你选择了Windows应用程序而不是控制台应用程序。

在这个假设下,你的项目中的某些配置会调用WinMain(),但你没有定义它,因此出现了链接错误。


当我能够选择一个项目时,我有很多选项...基本(Windows应用程序,控制台应用程序,静态库,dll,空项目)多媒体(直接3D,Open GL)Win 32(文件编辑器,MDI编辑器,动画示例)控制台(你好世界,输入循环,大奖,open MP)我总是选择“Hello World”,我一定选择了其他东西,在复制代码和重新选择项目后它就起作用了。 - Jessica
即使使用Windows子系统,也不需要WinMain(事实上,我一直没有使用它)。请参阅https://dev59.com/9W435IYBdhLWcg3wtSYV。 - chris

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接