如何在普通Windows命令提示符中用cl.exe调用标准库编译DLL?
普通命令提示符下编译VS DLL的环境配置与编译方法
一、解决vcvars脚本无法识别的问题
你找不到vcvars32.bat是因为它不在系统默认PATH路径中,需要使用完整路径执行。VS2022的默认安装路径下,脚本位置如下:
- 32位环境:
C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build\vcvars32.bat - 64位环境:
C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build\vcvars64.bat
(如果安装的是Professional或Enterprise版本,将路径中的Community替换为对应版本名称即可)
直接在命令提示符中执行完整路径的脚本,示例:
"C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build\vcvars32.bat"
执行完成后,编译所需的头文件路径、库路径、工具路径等环境变量会自动配置到位,无需手动设置。
二、手动配置环境变量(不推荐,易出错)
如果不想使用vcvars脚本,需手动设置三个关键环境变量:
- INCLUDE:添加C++标准库和Windows SDK的头文件路径(注意替换示例中的版本号为你实际安装的版本):
set INCLUDE=C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.38.33130\include;C:\Program Files (x86)\Windows Kits\10\Include\10.0.22621.0\ucrt;C:\Program Files (x86)\Windows Kits\10\Include\10.0.22621.0\um;C:\Program Files (x86)\Windows Kits\10\Include\10.0.22621.0\shared - LIB:添加库文件路径:
set LIB=C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.38.33130\lib\x86;C:\Program Files (x86)\Windows Kits\10\Lib\10.0.22621.0\ucrt\x86;C:\Program Files (x86)\Windows Kits\10\Lib\10.0.22621.0\um\x86 - PATH:添加cl.exe等编译工具的路径:
set PATH=C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.38.33130\bin\Hostx86\x86;%PATH%
三、编译DLL的命令及链接要求
环境配置完成后,使用以下命令编译你的test.cpp生成DLL:
cl /LD test.cpp
/LD是核心参数,用于指定编译器生成动态链接库,会自动处理DLL所需的导出表生成、运行时库链接等操作。- 对于
iostream这类C标准库,只要INCLUDE和LIB路径配置正确,/LD参数会自动链接对应的C运行时库(如msvcrt.lib),无需额外添加链接标志。
如果需要静态链接C++运行时库(让DLL不依赖外部运行时文件),可添加/MT参数:
cl /LD /MT test.cpp
编译成功后会生成三个文件:test.dll(目标动态库)、test.lib(供其他程序调用的导入库)、test.exp(导出符号文件)。
内容的提问来源于stack exchange,提问作者Runsva
相关产品推荐
相关产品推荐

