LINK:致命错误LNK1561:必须在VC++中定义入口点ERROR

Sor*_*tOf 32 c++ visual-studio visual-c++

我是第一次安装MS VS VC++,以便开始使用GLFW库编写OpenGL.我在http://shawndeprey.blogspot.com/2012/02/setting-up-glfw-in-visual-studio-2010.html关注如何安装它的说明 然后我写了这个简单的程序,只是为了测试它,它确实在Eclipse上工作:

#include <stdlib.h>
#include <GL/glfw.h>

using namespace std;

int main()
{
    int running = GL_TRUE;
    if (!glfwInit()) {
        exit(EXIT_FAILURE);
    }

    if (!glfwOpenWindow(300, 300, 0, 0, 0, 0, 0, 0, GLFW_WINDOW)) {
        glfwTerminate();
        exit(EXIT_FAILURE);
    }

    while (running) {
        // glClear( GL_COLOR_BUFFER_BIT );
        glfwSwapBuffers();
        running = !glfwGetKey(GLFW_KEY_ESC) && glfwGetWindowParam(GLFW_OPENED);
    }

    glfwTerminate();
    exit(EXIT_SUCCESS);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

但后来我收到了这个可怕的错误:

------ Build started: Project: first1, Configuration: Debug Win32 ------
   LINK : fatal error LNK1561: entry point must be defined
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
Run Code Online (Sandbox Code Playgroud)

我知道,我在互联网上环顾四周,我找到的唯一解决方案是"它需要main()功能才能工作".我显然已经拥有它,就在那里,但它仍然会给我带来同样致命的错误:(

很高兴得到如何解决它的回应.我可能在安装过​​程中存在缺陷或其他问题.

小智 24

这是一个控制台程序项目还是Windows项目?我问,因为对于Win32和类似的项目,切入点是WinMain().

  1. 右键单击左侧的项目(不是解决方案).
  2. 然后单击属性 - >配置属性 - >链接器 - >系统

如果它说Subsystem Windows你的入口点应该是WinMain(),即

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR lpCmdLine, int nShowCmd)
{
   your code here ...
}
Run Code Online (Sandbox Code Playgroud)

此外,谈到评论.这是一个编译(或更准确地说是一个链接)错误,而不是运行时错误.当您开始调试时,编译器需要创建一个完整的程序(而不仅仅是编译您的模块),这就是发生错误的时候.

它甚至没有达到加载和运行的程度.

  • 这在犯罪上是不准确的.虽然它有时似乎有效,但它会以微妙的方式失败.如果您使用CRT,则用户提供的入口点不是进程条目.您需要设置CRT的入口点,因为它执行必要的初始化(例如运行静态初始化器).使用Microsoft的编译器(和CRT)时,[入口点](https://msdn.microsoft.com/en-us/library/f9t8842e.aspx)应该是`WinMainCRTStartup`(或`wWinMainCRTStartup`). (5认同)

ash*_*ash 8

在这种情况下,它无法找到您的程序的入口点main().您的链接器设置可能不正确.

在这里看到这篇文章


Mat*_*kas 6

将它更改为Console(/ SUBSYSTEM:CONSOLE)它将起作用


Mic*_*ado 6

在我的情况下,程序运行正常,然后,有一天我刚刚遇到这个问题而没有做任何事情.

有效的解决方案(在编辑之前,该区域为空):

在此输入图像描述


Mic*_*ati 6

如果将项目定义为.exe但打算创建.lib或.dll,则会出现此错误。