使用Clang编译仅生成engine.dll,未生成.lib文件的问题求助
解决Clang编译DLL时未生成.lib导入库的问题
在Windows环境下用Clang编译动态链接库(DLL)时,默认不会自动生成对应的导入库(.lib),需要显式添加链接器参数触发这一行为。
关键修改步骤
给编译脚本里的linkerFlags添加-Wl,--out-implib,../bin/%assembly%.lib参数:
-Wl,:告知Clang将后续参数传递给底层链接器(ld)--out-implib:指定导入库的输出路径与文件名
修改后的完整编译脚本
REM Build script for engine @ECHO OFF SetLocal EnableDelayedExpansion REM Get a list of all the .c files. SET cFilenames= FOR /R %%f in (*.c) do ( SET cFilenames=!cFilenames! %%f ) REM echo "Files:" %cFilenames% SET assembly=engine SET compilerFlags=-g -shared -Wvarargs -Wall -Werror REM -Wall -Werror SET includeFlags=-Isrc -I%VULKAN_SDK%/Include SET linkerFlags=-luser32 -lvulkan-1 -L%VULKAN_SDK%/Lib -Wl,--out-implib,../bin/%assembly%.lib SET defines=-D_DEBUG -DKEXPORT -D_CRT_SECURE_NO_WARNINGS ECHO "Building %assembly%..." clang %cFilenames% %compilerFlags% -o ../bin/%assembly%.dll %defines% %includeFlags% %linkerFlags%
说明
修改后重新运行build-all.bat,Clang会在bin目录同时生成engine.dll和engine.lib文件。其中.lib作为导入库,供其他需要链接该引擎DLL的项目使用。需确保使用Clang 9.0及以上版本,旧版本可能不支持该参数。
内容的提问来源于stack exchange,提问作者Mauser_Maschine
相关产品推荐
相关产品推荐

