Visual Studio 继续使用 wWinMain() 作为入口点而不是我想要的 main() 函数

Visual Studio keeps using wWinMain() as the entry point instead of the main() function I want it to

我的 Visual Studio 项目是作为 windows 应用程序启动的,但是我开始意识到,如果我想使用 GLFW,那么我应该打开一个 GLFW window 而不是标准的 wWinMain window。我有一个 wWinMain 函数,但是因为每次我 运行 程序而不是我的 int main() 函数和里面的 GLFW window 测试代码时它保持 运行ning,我改变了名字wWinMain 函数的一部分,希望在构建程序时它会遵从我编写的 main() 函数。但是它没有用,而是我不断收到相同的错误:

error LNK2019: unresolved external symbol WinMain referenced in function "int __cdecl invoke_main(void)" (?invoke_main@@YAHXZ)

如何让它停止寻找 wWinMain 函数,而只寻找 运行 main() 函数?

到目前为止唯一有效的解决方案是将我的 main() 函数重命名为 wWinMain 并让它接受所有变量但不对它们做任何事情并且只是 运行 我的代码在里面正常,但是这个似乎不是最佳选择。

我也尝试了建议的答案 但它总是使用 GLFW window 打开命令 window 而默认情况下使用 wWinMain 函数会 运行没有一个,除非我专门使用 AllocConsole(),所以我怀疑建议的答案实际上并没有针对我的问题的正确解决方案。

我也试过 所示的解决方案,但它对我不起作用? idk 也许我执行错了

Windows 知道两种与您相关的程序:控制台程序和图形程序。

控制台程序自动获得一个控制台(例如,您可以在命令行中获取它们的输出)并且它们的入口点是 mainwmain.

图形程序不会自动获得控制台,而这正是您想要的。他们也不会自动创建任何 windows;您必须手动执行此操作(即像您想要的那样使用 GLFW)。它们的入口点是always WinMainwWinMain.

你必须选择一个,你不能mix-and-match。只需将您的 GLFW 代码放入 wWinMainmain 在图形 Windows 程序中没有意义,您应该将其删除。不使用传递给 wWinMain 的参数没有错 - 如果您不需要它们,那很好。 main 也接受您当前不使用的参数(但 main 有点特殊,因为您可以省略未使用的参数)。

选择main还是winMain是在项目的linker部分控制的

  • 子系统=控制台意味着主要
  • 子系统=windows表示winmain