如何使用GLFW预编译二进制文件编译Visual Studio 2019版本构建

流浪者

我正在尝试在Visual Studio 2019中构建一个使用GLFW预编译静态库的程序(如果重要的话,它适用于Vulkan而不是OpenGL)。当我在调试模式下构建时,它可以正常编译。在发布模式下编译时,出现以下错误:

Error   LNK2001 unresolved external symbol __security_check_cookie  [myapp] [project_path]\glfw3.lib(win32_joystick.obj)    1   
Error   LNK2001 unresolved external symbol __security_check_cookie  [myapp] [project_path]\glfw3.lib(wgl_context.obj)   1   
Error   LNK2001 unresolved external symbol __security_check_cookie  [myapp] [project_path]\glfw3.lib(egl_context.obj)   1   
Error   LNK2001 unresolved external symbol __security_check_cookie  [myapp] [project_path]\glfw3.lib(osmesa_context.obj)    1   
Error   LNK2001 unresolved external symbol __security_check_cookie  [myapp] [project_path]\glfw3.lib(input.obj) 1   
Error   LNK2001 unresolved external symbol __security_check_cookie  [myapp] [project_path]\glfw3.lib(win32_init.obj)    1   
Error   LNK2001 unresolved external symbol __security_check_cookie  [myapp] [project_path]\glfw3.lib(win32_monitor.obj) 1   
Error   LNK2001 unresolved external symbol __security_check_cookie  [myapp] [project_path]\glfw3.lib(context.obj)   1   

以及与glfw有关的更多错误。

我已经检查过:

a)我的调试和发布配置都配置为完全相同,以便链接到glfw。

b)glfw3.lib文件来自lib-vc2019文件夹中最新下载的预编译二进制文件。

c)它们是64位二进制文​​件,调试和发行版均以64位模式构建

仅出于测试目的,我还尝试了32位二进制文​​件(显然不起作用),并且我还删除了该库,以确保两个版本都给出了相同的错误消息(确实如此)。

我使用的唯一glfw函数是

glfwInit()
glfwGetRequiredInstanceExtensions()
glfwCreateWindow()
glfwCreateWindowSurface()
glfwDestroyWindow()
glfwTerminate()

我猜代码不是问题;但这是由一些我不知道的编译器设置引起的,默认情况下,发行版配置中的设置有所不同。

流浪者

根据Adrian的回答,我检查了该类别中的其他配置,发现“ C / C ++代码生成”下的“运行时库”选项是问题所在。在调试中,它设置为“多线程调试DLL(/ MDd)”,在发行版中,它设置为“多线程DLL(/ MDd)”。将其更改为调试DLL后,该发行版将编译并运行而不会出现问题。

这似乎是一个glfw错误,但对于它所做的更改,此设置有效

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何使用 Visual Studio 2019 构建最兼容的二进制文件?

如何修复在更新到Visual Studio 2019版本16.7.0之后出现的错误

如何在Visual Studio 2019中创建XUnit项目的.NET Framework 4.6版本?

Visual Studio 2019版本。高CPU使用率

如何为Visual Studio Code构建Debian和RPM二进制文件?

Linux内核手动构建:生成的二进制文件比预编译的二进制文件大10倍

使用64位或32位版本的Android Studio时,Gradle会卡在“构建”或“ assembleDebug”中

Visual Studio 2019 编译构建

从编译的二进制文件中获取golang版本

更新到Visual Studio 2017版本15.4

Microsoft Visual Studio Community 2015版本缓慢

“ Visual Studio Online”是否为2010版本?

用不同的C ++编译器构建的二进制文件和库如何兼容?

如何确定哪个Go版本用于编译二进制文件

使用Bazel将二进制文件编译为多个版本的.NET Framework

在Visual Studio / msbuild中编译的二进制文件是否在Linux中的Mono下100%兼容?

强制Android Studio编译外部库的ARM64版本

如何在Visual Studio 2017版本15.3中使用F#?

如何使用Cargo构建多个二进制文件?

编译的Python二进制报告版本错误

使用qmake构建二进制文件的多个版本

如何明确安装Visual Studio 2017 64位版本?

如何在Visual Studio 2017版本15.8中删除水平白线?

如何确定当前已安装的Visual Studio 2013版本/更新?

在具有Android Studio 2.2和CMake的Android中编译和使用依赖于ABI的可执行二进制文件

Microsoft Visual Studio Ultimate 2012版本11.0.50727.1中没有“添加新表”选项

Visual Studio 2015版本3冻结了在Azure项目中编辑角色

从Visual Studio 2012中的源代码获取MySQL Connector C ++ 64位版本

使用Android Studio生成SHA1版本证书