glsl - 我想链接 glslang 和 SPIRV 时出现 LINK 错误
问题描述
我想使用 glslang 和 SPIRV 库进行在线 glsl 转换和 spirv 生成,我能够通过 cmake 生成项目文件,并且能够成功构建项目 glslang.sln,构建过程产生了所有必需的库以及可执行文件,但是当我设置我的 VS 项目并尝试链接 glslang 和 SPIRV 时,我收到以下链接错误:
Severity Code Description Project File Line Suppression State
Error LNK2001 unresolved external symbol "public: void __cdecl
shader::initializeResources(struct TBuiltInResource &)" (? initializeResources@shader@@QEAAXAEAUTBuiltInResource@@@Z) glslang-TO-SPV C:\Users\Zirian\source\repos\glslang-TO-SPV\glslang-TO-SPV\shader.obj 1
Error LNK2001 unresolved external symbol spvContextCreate glslang-TO-SPV C:\Users\Zirian\source\repos\glslang-TO-SPV\glslang-TO-SPV\SPIRV.lib(SpvTools.obj) 1
Error LNK2001 unresolved external symbol spvContextDestroy glslang-TO-SPV C:\Users\Zirian\source\repos\glslang-TO-SPV\glslang-TO-SPV\SPIRV.lib(SpvTools.obj) 1
Error LNK2001 unresolved external symbol spvValidatorOptionsCreate glslang-TO-SPV C:\Users\Zirian\source\repos\glslang-TO-SPV\glslang-TO-SPV\SPIRV.lib(SpvTools.obj) 1
Error LNK2001 unresolved external symbol spvValidatorOptionsDestroy glslang-TO-SPV C:\Users\Zirian\source\repos\glslang-TO-SPV\glslang-TO-SPV\SPIRV.lib(SpvTools.obj) 1
Error LNK2001 unresolved external symbol spvValidatorOptionsSetBeforeHlslLegalization glslang-TO-SPV C:\Users\Zirian\source\repos\glslang-TO-SPV\glslang-TO-SPV\SPIRV.lib(SpvTools.obj) 1
Error LNK2001 unresolved external symbol spvValidatorOptionsSetRelaxBlockLayout glslang-TO-SPV C:\Users\Zirian\source\repos\glslang-TO-SPV\glslang-TO-SPV\SPIRV.lib(SpvTools.obj) 1
Error LNK2001 unresolved external symbol spvOptimizerOptionsCreate glslang-TO-SPV C:\Users\Zirian\source\repos\glslang-TO-SPV\glslang-TO-SPV\SPIRV.lib(SpvTools.obj) 1
Error LNK2001 unresolved external symbol spvOptimizerOptionsDestroy glslang-TO-SPV C:\Users\Zirian\source\repos\glslang-TO-SPV\glslang-TO-SPV\SPIRV.lib(SpvTools.obj) 1
Error LNK2001 unresolved external symbol spvOptimizerOptionsSetRunValidator glslang-TO-SPV C:\Users\Zirian\source\repos\glslang-TO-SPV\glslang-TO-SPV\SPIRV.lib(SpvTools.obj) 1
Error LNK2001 unresolved external symbol spvBinaryToText glslang-TO-SPV C:\Users\Zirian\source\repos\glslang-TO-SPV\glslang-TO-SPV\SPIRV.lib(SpvTools.obj) 1
Error LNK2001 unresolved external symbol spvValidateWithOptions glslang-TO-SPV C:\Users\Zirian\source\repos\glslang-TO-SPV\glslang-TO-SPV\SPIRV.lib(SpvTools.obj) 1
Error LNK2001 unresolved external symbol spvDiagnosticDestroy glslang-TO-SPV C:\Users\Zirian\source\repos\glslang-TO-SPV\glslang-TO-SPV\SPIRV.lib(SpvTools.obj) 1
Error LNK2001 unresolved external symbol spvDiagnosticPrint glslang-TO-SPV C:\Users\Zirian\source\repos\glslang-TO-SPV\glslang-TO-SPV\SPIRV.lib(SpvTools.obj) 1
Error LNK2001 unresolved external symbol "public: __cdecl spvtools::Optimizer::PassToken::~PassToken(void)" (??1PassToken@Optimizer@spvtools@@QEAA@XZ) glslang-TO-SPV C:\Users\Zirian\source\repos\glslang-TO-SPV\glslang-TO-SPV\SPIRV.lib(SpvTools.obj) 1
Error LNK2001 unresolved external symbol "public: __cdecl spvtools::Optimizer::Optimizer(enum spv_target_env)" (??0Optimizer@spvtools@@QEAA@W4spv_target_env@@@Z) glslang-TO-SPV C:\Users\Zirian\source\repos\glslang-TO-SPV\glslang-TO-SPV\SPIRV.lib(SpvTools.obj) 1
Error LNK2001 unresolved external symbol "public: __cdecl spvtools::Optimizer::~Optimizer(void)" (??1Optimizer@spvtools@@QEAA@XZ) glslang-TO-SPV C:\Users\Zirian\source\repos\glslang-TO-SPV\glslang-TO-SPV\SPIRV.lib(SpvTools.obj) 1
Error LNK2001 unresolved external symbol "public: void __cdecl spvtools::Optimizer::SetMessageConsumer(class std::function<void __cdecl(enum spv_message_level_t,char const *,struct spv_position_t const &,char const *)>)" (?SetMessageConsumer@Optimizer@spvtools@@QEAAXV?$function@$$A6AXW4spv_message_level_t@@PEBDAEBUspv_position_t@@1@Z@std@@@Z) glslang-TO-SPV C:\Users\Zirian\source\repos\glslang-TO-SPV\glslang-TO-SPV\SPIRV.lib(SpvTools.obj) 1
Error LNK2001 unresolved external symbol "public: class spvtools::Optimizer & __cdecl spvtools::Optimizer::RegisterPass(struct spvtools::Optimizer::PassToken &&)" (?RegisterPass@Optimizer@spvtools@@QEAAAEAV12@$$QEAUPassToken@12@@Z) glslang-TO-SPV C:\Users\Zirian\source\repos\glslang-TO-SPV\glslang-TO-SPV\SPIRV.lib(SpvTools.obj) 1
Error LNK2001 unresolved external symbol "public: bool __cdecl spvtools::Optimizer::Run(unsigned int const *,unsigned __int64,class std::vector<unsigned int,class std::allocator<unsigned int> > *,struct spv_optimizer_options_t * const)const " (?Run@Optimizer@spvtools@@QEBA_NPEBI_KPEAV?$vector@IV?$allocator@I@std@@@std@@QEAUspv_optimizer_options_t@@@Z) glslang-TO-SPV C:\Users\Zirian\source\repos\glslang-TO-SPV\glslang-TO-SPV\SPIRV.lib(SpvTools.obj) 1
Error LNK2001 unresolved external symbol "struct spvtools::Optimizer::PassToken __cdecl spvtools::CreateEliminateDeadFunctionsPass(void)" (?CreateEliminateDeadFunctionsPass@spvtools@@YA?AUPassToken@Optimizer@1@XZ) glslang-TO-SPV C:\Users\Zirian\source\repos\glslang-TO-SPV\glslang-TO-SPV\SPIRV.lib(SpvTools.obj) 1
Error LNK2001 unresolved external symbol "struct spvtools::Optimizer::PassToken __cdecl spvtools::CreateBlockMergePass(void)" (?CreateBlockMergePass@spvtools@@YA?AUPassToken@Optimizer@1@XZ) glslang-TO-SPV C:\Users\Zirian\source\repos\glslang-TO-SPV\glslang-TO-SPV\SPIRV.lib(SpvTools.obj) 1
Error LNK2001 unresolved external symbol "struct spvtools::Optimizer::PassToken __cdecl spvtools::CreateInlineExhaustivePass(void)" (?CreateInlineExhaustivePass@spvtools@@YA?AUPassToken@Optimizer@1@XZ) glslang-TO-SPV C:\Users\Zirian\source\repos\glslang-TO-SPV\glslang-TO-SPV\SPIRV.lib(SpvTools.obj) 1
Error LNK2001 unresolved external symbol "struct spvtools::Optimizer::PassToken __cdecl spvtools::CreateLocalSingleBlockLoadStoreElimPass(void)" (?CreateLocalSingleBlockLoadStoreElimPass@spvtools@@YA?AUPassToken@Optimizer@1@XZ) glslang-TO-SPV C:\Users\Zirian\source\repos\glslang-TO-SPV\glslang-TO-SPV\SPIRV.lib(SpvTools.obj) 1
Error LNK2001 unresolved external symbol "struct spvtools::Optimizer::PassToken __cdecl spvtools::CreateDeadBranchElimPass(void)" (?CreateDeadBranchElimPass@spvtools@@YA?AUPassToken@Optimizer@1@XZ) glslang-TO-SPV C:\Users\Zirian\source\repos\glslang-TO-SPV\glslang-TO-SPV\SPIRV.lib(SpvTools.obj) 1
Error LNK2001 unresolved external symbol "struct spvtools::Optimizer::PassToken __cdecl spvtools::CreateLocalMultiStoreElimPass(void)" (?CreateLocalMultiStoreElimPass@spvtools@@YA?AUPassToken@Optimizer@1@XZ) glslang-TO-SPV C:\Users\Zirian\source\repos\glslang-TO-SPV\glslang-TO-SPV\SPIRV.lib(SpvTools.obj) 1
Error LNK2001 unresolved external symbol "struct spvtools::Optimizer::PassToken __cdecl spvtools::CreateLocalAccessChainConvertPass(void)" (?CreateLocalAccessChainConvertPass@spvtools@@YA?AUPassToken@Optimizer@1@XZ) glslang-TO-SPV C:\Users\Zirian\source\repos\glslang-TO-SPV\glslang-TO-SPV\SPIRV.lib(SpvTools.obj) 1
Error LNK2001 unresolved external symbol "struct spvtools::Optimizer::PassToken __cdecl spvtools::CreateLocalSingleStoreElimPass(void)" (?CreateLocalSingleStoreElimPass@spvtools@@YA?AUPassToken@Optimizer@1@XZ) glslang-TO-SPV C:\Users\Zirian\source\repos\glslang-TO-SPV\glslang-TO-SPV\SPIRV.lib(SpvTools.obj) 1
Error LNK2001 unresolved external symbol "struct spvtools::Optimizer::PassToken __cdecl spvtools::CreateDeadInsertElimPass(void)" (?CreateDeadInsertElimPass@spvtools@@YA?AUPassToken@Optimizer@1@XZ) glslang-TO-SPV C:\Users\Zirian\source\repos\glslang-TO-SPV\glslang-TO-SPV\SPIRV.lib(SpvTools.obj) 1
Error LNK2001 unresolved external symbol "struct spvtools::Optimizer::PassToken __cdecl spvtools::CreateAggressiveDCEPass(void)" (?CreateAggressiveDCEPass@spvtools@@YA?AUPassToken@Optimizer@1@XZ) glslang-TO-SPV C:\Users\Zirian\source\repos\glslang-TO-SPV\glslang-TO-SPV\SPIRV.lib(SpvTools.obj) 1
Error LNK2001 unresolved external symbol "struct spvtools::Optimizer::PassToken __cdecl spvtools::CreatePropagateLineInfoPass(void)" (?CreatePropagateLineInfoPass@spvtools@@YA?AUPassToken@Optimizer@1@XZ) glslang-TO-SPV C:\Users\Zirian\source\repos\glslang-TO-SPV\glslang-TO-SPV\SPIRV.lib(SpvTools.obj) 1
Error LNK2001 unresolved external symbol "struct spvtools::Optimizer::PassToken __cdecl spvtools::CreateRedundantLineInfoElimPass(void)" (?CreateRedundantLineInfoElimPass@spvtools@@YA?AUPassToken@Optimizer@1@XZ) glslang-TO-SPV C:\Users\Zirian\source\repos\glslang-TO-SPV\glslang-TO-SPV\SPIRV.lib(SpvTools.obj) 1
Error LNK2001 unresolved external symbol "struct spvtools::Optimizer::PassToken __cdecl spvtools::CreateCFGCleanupPass(void)" (?CreateCFGCleanupPass@spvtools@@YA?AUPassToken@Optimizer@1@XZ) glslang-TO-SPV C:\Users\Zirian\source\repos\glslang-TO-SPV\glslang-TO-SPV\SPIRV.lib(SpvTools.obj) 1
Error LNK2001 unresolved external symbol "struct spvtools::Optimizer::PassToken __cdecl spvtools::CreateMergeReturnPass(void)" (?CreateMergeReturnPass@spvtools@@YA?AUPassToken@Optimizer@1@XZ) glslang-TO-SPV C:\Users\Zirian\source\repos\glslang-TO-SPV\glslang-TO-SPV\SPIRV.lib(SpvTools.obj) 1
Error LNK2001 unresolved external symbol "struct spvtools::Optimizer::PassToken __cdecl spvtools::CreateRedundancyEliminationPass(void)" (?CreateRedundancyEliminationPass@spvtools@@YA?AUPassToken@Optimizer@1@XZ) glslang-TO-SPV C:\Users\Zirian\source\repos\glslang-TO-SPV\glslang-TO-SPV\SPIRV.lib(SpvTools.obj) 1
Error LNK2001 unresolved external symbol "struct spvtools::Optimizer::PassToken __cdecl spvtools::CreateScalarReplacementPass(unsigned int)" (?CreateScalarReplacementPass@spvtools@@YA?AUPassToken@Optimizer@1@I@Z) glslang-TO-SPV C:\Users\Zirian\source\repos\glslang-TO-SPV\glslang-TO-SPV\SPIRV.lib(SpvTools.obj) 1
Error LNK2001 unresolved external symbol "struct spvtools::Optimizer::PassToken __cdecl spvtools::CreateIfConversionPass(void)" (?CreateIfConversionPass@spvtools@@YA?AUPassToken@Optimizer@1@XZ) glslang-TO-SPV C:\Users\Zirian\source\repos\glslang-TO-SPV\glslang-TO-SPV\SPIRV.lib(SpvTools.obj) 1
Error LNK2001 unresolved external symbol "struct spvtools::Optimizer::PassToken __cdecl spvtools::CreateSimplificationPass(void)" (?CreateSimplificationPass@spvtools@@YA?AUPassToken@Optimizer@1@XZ) glslang-TO-SPV C:\Users\Zirian\source\repos\glslang-TO-SPV\glslang-TO-SPV\SPIRV.lib(SpvTools.obj) 1
Error LNK2001 unresolved external symbol "struct spvtools::Optimizer::PassToken __cdecl spvtools::CreateVectorDCEPass(void)" (?CreateVectorDCEPass@spvtools@@YA?AUPassToken@Optimizer@1@XZ) glslang-TO-SPV C:\Users\Zirian\source\repos\glslang-TO-SPV\glslang-TO-SPV\SPIRV.lib(SpvTools.obj) 1
Error LNK1120 39 unresolved externals glslang-TO-SPV C:\Users\Zirian\source\repos\glslang-TO-SPV\x64\Release\glslang-TO-SPV.exe 1
我正在使用的库是SPIRV.lib glslang.lib OGLCompiler.lib OSDependent.lib HLSL.lib
我的库文件夹包含以下库:
我正在使用 VS 2019 平台 x64
解决方案
推荐阅读
- swift - 下载 Xcode 配置文件时出现问题
- android - 图像已下载但未显示在图库中
- sql - 如何在一个查询中使用同一张表 INNER JOIN 2 或 3 个不同的数据库
- java - 在制作和 Android SDK 时,有没有办法在不传递视图的情况下不断更新开发人员的值?
- .net - Amazon Transcribe Streaming Service Speech to text for .NET SDK
- php - 如果存在,从 URL 中去除 fbclid
- graphql - GraphQL:传递执行的根值规范是什么?
- php - 为 php 响应式网站选择输入 onChange 事件在 Firefox 浏览器中不起作用
- reactjs - Fabric-ui-react GroupedList 组件如何在恢复每个组的折叠状态的同时动态添加项目?
- sql - 按模式返回具有逗号分隔值的行 (Oracle SQL)