编译器找不到vulkan的H264编解码器头文件

问题描述 投票:0回答:1

由于

'vulkan/vulkan.h' file not found
上出现不同的错误,我得到
vulkan_core.h
:使用
vk_video/vulkan_video_codec_h264std.h' file not found 
头文件运行脚本后,
vulkan.h
。问题是我已经手动检查了头文件是否存在并且没有拼写错误

我已经按照官方文档中的建议下载并设置了最新的 vulkan sdk,遵循我的系统(Fedora Linux)的每一步。将

source
中的
setup-env.sh
放入
.bashrc
中,检查所需的每个环境变量是否都有一个值(除了
VK_LAYER_PATH
,我读到它不需要)。并在终端上成功运行
vkvia
,没有任何错误。

我通过运行包含

vulkan/vulkan.h
头文件的测试脚本来检查一切是否正常。但基本上,我得到一个错误:
'vk_video/vulkan_video_codec_h264std.h' file not found

vulkan-core.h
l-8374 (
#include "vk_video/vulkan_video_codec_h264std.h"
)

正如我之前所说,我手动检查了
vulkan/vulkan.h
vk_video/vulkan_video_codec_h264std.h
都存在。

x86_64/include/vk_video 目录:

vulkan/vulkansdk-linux-x86_64-1.3.268.0/1.3.268.0/x86_64/include/vk_video/
├── vulkan_video_codec_h264std_decode.h
├── vulkan_video_codec_h264std_encode.h
├── vulkan_video_codec_h264std.h
├── vulkan_video_codec_h265std_decode.h
├── vulkan_video_codec_h265std_encode.h
├── vulkan_video_codec_h265std.h
└── vulkan_video_codecs_common.h


好吧,因为看来我必须这样做,尽管我不知道如何在另一个系统上重现该错误,我什至不知道这是 vulkan 的错误还是我的错误,这里有一些您可能想知道的附加信息:
发生错误的最小脚本(任何带有vulkan头文件的脚本)

#include <vulkan/vulkan.h>

int main() {
    return 0;
}

我因此收到的每条错误消息

  • 通过上面脚本的编译器:
fatal error: 'vulkan/vulkan.h' file not found
    2 | #include <vulkan/vulkan.h>
      |          ^~~~~~~~~~~~~~~~~
1 error generated.
  • 由编译器在
    vulkan_core.h
clang++: warning: treating 'c-header' input as 'c++-header' when in C++ mode, this behavior is deprecated [-Wdeprecated]
/home/owos/vulkan/vulkansdk-linux-x86_64-1.3.268.0/1.3.268.0/x86_64/include/vulkan/vulkan_core.h:8374:10: fatal error: 'vk_video/vulkan_video_codec_h264std.h' file not found
 8374 | #include "vk_video/vulkan_video_codec_h264std.h"
      |          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1 error generated.

其他信息

  • 编译器:Clang
$ clang++ -v
clang version 17.0.4 (Fedora 17.0.4-1.fc39)
Target: x86_64-redhat-linux-gnu
Thread model: posix
InstalledDir: /usr/bin
Found candidate GCC installation: /usr/bin/../lib/gcc/x86_64-redhat-linux/13
Selected GCC installation: /usr/bin/../lib/gcc/x86_64-redhat-linux/13
Candidate multilib: .;@m64
Candidate multilib: 32;@m32
Selected multilib: .;@m64
  • 编译器标志:
    -Wall -Wextra -g3 -std=c++20
    (也尝试过 gcc,相同的 c++ 版本,相同的错误)
  • 操作系统:Fedora Linux 39 (GNOME)
  • 安装的Vulkan版本:
    1.3.268.0

    如果您需要
    vulkaninfo
    内容,请给我发电子邮件:[电子邮件受保护],我会将其给您,因为它太长,无法在帖子中容纳
c++ vulkan file-not-found
1个回答
0
投票

据我所见,您收到包含错误,这是因为编译器正在系统目录中查找包含文件和 lib 文件,因此只需将它们复制到 /usr/local/include 和 /usr/local/lib

如果将第三方库和代码放入/opt文件夹中会更好

sudo mkdir /opt/vulkan
sudo mv path/to/vulkansdk-linux-x86_64-1.3.268.0 /opt/vulkan

如果您正在努力处理环境变量,那么只需更改 .profile 并将此行添加到其末尾即可

source /opt/vulkan/../setup-env.sh

现在将它们复制到系统目录中,也可以在代码中使用它们

vulkan 头文件

sudo cp -r $VULKAN_SDK/include/vulkan/ /usr/local/include/

Vulkan 库

sudo cp -P $VULKAN_SDK/lib/libvulkan.so* /usr/local/lib/

Vulkan 层文件

sudo cp $VULKAN_SDK/lib/libVkLayer_*.so /usr/local/lib/
sudo mkdir -p /usr/local/share/vulkan/explicit_layer.d
sudo cp $VULKAN_SDK/etc/vulkan/explicit_layer.d/VkLayer_*.json /usr/local/share/vulkan/explicit_layer.d

最后让一切焕然一新

sudo ldconfig
© www.soinside.com 2019 - 2024. All rights reserved.