简单程序的“必须定义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