【发布时间】:2022-07-23 22:31:45
【问题描述】:
我将我的 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 并让它接受所有变量,但对它们不做任何事情,只是在内部正常运行我的代码,但这似乎不是最优的。
我也尝试过建议here 的答案,但它总是会打开一个带有 GLFW 窗口的命令窗口,而默认情况下 wWinMain 函数会在没有命令窗口的情况下运行,除非我专门使用 AllocConsole(),所以我怀疑答案建议实际上没有针对我的问题的正确解决方案。
我也尝试了here 显示的解决方案,但这对我不起作用? idk 也许我执行错了
【问题讨论】:
-
wWinMain不必创建任何 WIN32 窗口。如果它这样做了,那么其中必须有一些代码可以做到这一点,你可以把它拿出来。然后做你想到的任何 GLFW 魔法。 -
@PaulSanders 不我知道为什么 wWinMain 正在打开控制台(我在 wWinMain 函数中有一个 AllocConsole 调用),问题是即使 wWinMain 没有被调用 i> 我认为这表明该解决方案或我的实施存在一些问题
-
听起来您需要创建“Windows 桌面应用程序”项目而不是“控制台应用程序”项目。
标签: c++ visual-studio winapi glfw