微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何通过 mingw-w64 在 windows 中运行 vulkan 示例代码?

如何解决如何通过 mingw-w64 在 windows 中运行 vulkan 示例代码?

大家。 我最近开始在我的 windows 笔记本电脑上学习 vulkan sdk 编程。我下载了 VulkanSDK-1.2.162.0、x86_64-8.1.0-release-win32-seh-rt_v6-rev0 和 glfw-3.3.2.bin.WIN64,解压并设置 windows 路径,一切都完成并测试结果显示在 cmd 中是这样的:

C:\Users\Administrator>g++ --version
g++ (x86_64-win32-seh-rev0,Built by MinGW-W64 project) 8.1.0
copyright (C) 2018 Free Software Foundation,Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or fitness FOR A PARTIculaR PURPOSE.
C:\Users\Administrator>vulkaninfo
==========
VULKANINFO
==========

Vulkan Instance Version: 1.2.154


Instance Extensions: count = 11
===============================
        VK_EXT_debug_report                    : extension revision 9
        VK_EXT_debug_utils                     : extension revision 2
        VK_EXT_swapchain_colorspace            : extension revision 4
......
......
......

我是c/c++编程的初学者,在我对c/c++编译器工作流程的基本理解中,它需要头文件路径和库路径。因此,我尝试使用以下 g++ 命令在我的机器上运行 vulkan 的官方 cpp code

g++ -std=c++11 vlkantest.cpp -I D:\\Other\\Vulkan\\SDK_ROOT\\1.2.162.0\\Include -I D:\\Other\\mingw64\\include -I D:\\Other\\glfw-3.3.2.bin.WIN64\\include -L D:\\Other\\Vulkan\\SDK_ROOT\\1.2.162.0\\Lib -L D:\\Other\\mingw64\\lib -L D:\\Other\\glfw-3.3.2.bin.WIN64\\lib-mingw-w64

但是,我得到的结果是这样的:

g++ -std=c++11 vlkantest.cpp -I D:\\Other\\Vulkan\\SDK_ROOT\\1.2.162.0\\Include -I D:\\Other\\mingw64\\include -I D:\\Other\\glfw-3.3.2.bin.WIN64\\include -L D:\\Other\\Vulkan\\SDK_ROOT\\1.2.162.0\\Lib -L D:\\Other\\mingw64\\lib -L D:\\Other\\glfw-3.3.2.bin.WIN64\\lib-mingw-w64
C:\Users\ADMINI~1\AppData\Local\Temp\ccdv6xfT.o:vlkantest.cpp:(.text$_ZN24HelloTriangleApplication10initwindowEv[_ZN24HelloTriangleApplication10initwindowEv]+0xd): undefined reference to `glfwInit'
C:\Users\ADMINI~1\AppData\Local\Temp\ccdv6xfT.o:vlkantest.cpp:(.text$_ZN24HelloTriangleApplication10initwindowEv[_ZN24HelloTriangleApplication10initwindowEv]+0x1c): undefined reference to `glfwWindowHint'
C:\Users\ADMINI~1\AppData\Local\Temp\ccdv6xfT.o:vlkantest.cpp:(.text$_ZN24HelloTriangleApplication10initwindowEv[_ZN24HelloTriangleApplication10initwindowEv]+0x2b): undefined reference to `glfwWindowHint'
C:\Users\ADMINI~1\AppData\Local\Temp\ccdv6xfT.o:vlkantest.cpp:(.text$_ZN24HelloTriangleApplication10initwindowEv[_ZN24HelloTriangleApplication10initwindowEv]+0x50): undefined reference to `glfwCreateWindow'
C:\Users\ADMINI~1\AppData\Local\Temp\ccdv6xfT.o:vlkantest.cpp:(.text$_ZN24HelloTriangleApplication8mainLoopEv[_ZN24HelloTriangleApplication8mainLoopEv]+0x17): undefined reference to `glfwWindowShouldClose'
C:\Users\ADMINI~1\AppData\Local\Temp\ccdv6xfT.o:vlkantest.cpp:(.text$_ZN24HelloTriangleApplication8mainLoopEv[_ZN24HelloTriangleApplication8mainLoopEv]+0x25): undefined reference to `glfwPollEvents'
C:\Users\ADMINI~1\AppData\Local\Temp\ccdv6xfT.o:vlkantest.cpp:(.text$_ZN24HelloTriangleApplication7cleanupEv[_ZN24HelloTriangleApplication7cleanupEv]+0x17): undefined reference to `glfwDestroyWindow'
C:\Users\ADMINI~1\AppData\Local\Temp\ccdv6xfT.o:vlkantest.cpp:(.text$_ZN24HelloTriangleApplication7cleanupEv[_ZN24HelloTriangleApplication7cleanupEv]+0x1c): undefined reference to `glfwTerminate'
collect2.exe: error: ld returned 1 exit status

我想我错过了 g++ 的一些参数,有人可以指出我在上述 g++ 命令中的错误吗?或者只是简单地解释一下这个示例代码是如何通过 mingw-w64 在 windows 中运行的? 非常感谢!

解决方法

似乎您已指定库文件夹,但实际上并未链接库。您是否尝试将 -lglfw3 -lvulkan-1 添加到编译命令中?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。