简单程序的“必须定义LNK1561入口点”

Posted

技术标签:

【中文标题】简单程序的“必须定义LNK1561入口点”【英文标题】:"LNK1561 entry point must be defined" for simple program 【发布时间】: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 的回答纠正。链接器错误是后来才提到的。 【参考方案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;

【讨论】:

你应该解释你改变了什么以及为什么,而不是仅仅发布一个代码的答案

以上是关于简单程序的“必须定义LNK1561入口点”的主要内容,如果未能解决你的问题,请参考以下文章

使用 Detox 和 React Native 更改应用程序入口点

我需要制作一个opencv 64 exe(错误无法加载程序入口点)

libcurl - 找不到过程入口点 CreateFile2

多个应用程序入口点

C#提示不只定义了一个入口点,请使用/main进行编译以指定包含入口点的类型

可执行程序的入口点在那里?(强化概念:程序真正的入口是mainCRTstartup)