繁体   English   中英

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 窗口而不是标准的 wWinMain 窗口。 我有一个 wWinMain 函数,但由于每次运行程序时它都在运行,而不是我的int main()函数和 GLFW 窗口测试代码,我更改了 wWinMain 函数的名称,希望在构建程序时它会遵从我写的 main() 函数。 但是它没有用,而是我不断收到相同的错误:

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

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

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

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

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

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

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

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

你必须选择一个,你不能混搭。 只需将您的 GLFW 代码放入wWinMain即可。 main在图形化的 Windows 程序中是没有意义的,你应该删除它。 不使用传递给wWinMain的参数没有任何问题 - 如果您不需要它们,那很好。 main还接受您当前不使用的参数(但main有点特别,因为您可以省略未使用的参数)。

main 或 winMain 的选择在项目的链接器部分控制

在此处输入图像描述

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

我只想补充

int WinMain() {
    return main();
}

在你的main()函数之后。 这样,如果您在 Windows 子系统和 Console 子系统之间切换,它将双向工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM