【问题标题】:"LNK1561 entry point must be defined" for simple program简单程序的“必须定义LNK1561入口点”
【发布时间】:2016-05-08 05:14:08
【问题描述】:

这是我的代码:

#include <iostream>
#include <cmath>
using namespace std;

int main()
{
    int x;
    int y = pow(2, x);
    cin>>x;
    cout<< y;
    system("pause");
    return 0;
}

为什么会出现编译错误? LNK1561 entry point must be defined

我正在使用 Visual Studio Express。

【问题讨论】:

  • 上面的代码应该编译成功,所以要么你的编译器坏了,要么你实际上有其他类型的问题,例如运行时错误。您的问题应该准确显示您遇到的错误。说“它没有运行”也不能让任何帮助者知道你遇到了什么问题。
  • "必须定义 LNK1561 入口点"
  • 也许您启动了一个 Win32 应用程序项目而不是一个 Win32 控制台项目。 See this answer,虽然你想改成控制台项目;您不想按照该答案中的建议更改为WinMain,因为您正在尝试编写控制台程序
  • 另外,你使用的是什么版本的编译器
  • @M.M 评论说 Visual Studio Express。不过,这里有几件不同的事情在起作用,所以我建议纯度为链接错误提出一个新问题。原始代码包含一个运行时错误,该错误已由 Inisheer 的回答纠正。链接器错误是后来才提到的。

标签: c++ visual-studio cmath


【解决方案1】:

使用前需要先给x赋值

int x;
int y = pow(2, x); // <--- what is the value of x here?

首先尝试从输入中获取x 的值。

#include <iostream>
#include <cmath>
using namespace std;
int main()
{
    int x;
    cin >> x;
    int y = pow(2, x);
    cout<< y; 
    system("pause");
    return 0;
}

【讨论】:

  • 谢谢。您比 Visual Studio 的任何错误指示和语法高亮功能都更聪明、更有用。
  • @purity 如果您发现此答案有用,您可以通过单击其左侧的小复选标记来接受它。这将为您和 Inisheer 带来一点声誉,并向任何未来的读者表明这是对解决您的问题最有帮助的答案。
  • 它仍然没有编译。我认为这与我已经鄙视的 Visual Studio 有关..
  • @purity Inisheer 的代码可以在 Code::Blocks 和 Visual Studio 中为我成功编译和运行。如果您仍然无法编译发布的代码,您可能需要提出一个单独的问题。不过,请确保您的代码与 Inisheer 的第一个匹配。
  • 我复制粘贴了他的。它没有运行。 Visual Studio 速成版。你会说 Code::Blocks 是一个更好的应用程序吗?
【解决方案2】:
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
    int x;
    //int y = pow(2, x);//(1)
    //cin>>x;//(2)

    //exchange the lines (2) and (1)
    cin>>x;//(2)
    int y = pow(2, x);//(1)
    cout<< y; 
    system("pause");
    return 0;
}

【讨论】:

  • 你应该解释你改变了什么以及为什么,而不是仅仅发布一个代码的答案
猜你喜欢
  • 1970-01-01
  • 2013-09-11
  • 2018-03-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多