如何将ML.exe生成的asmtest.obj与MSBuild输出的driver.sys进行链接?
解决MSBuild驱动项目中汇编文件的编译与链接问题
方案1:让MSBuild自动编译并链接汇编文件
直接把你的asmtest.asm加入驱动项目,修改vcxproj文件添加MASM编译规则:
<ItemGroup> <!-- 替换为你的汇编文件路径 --> <MASM Include="asmtest.asm" /> </ItemGroup>
MSBuild会根据目标架构(x86/x64)自动调用对应汇编器(ML.exe/ML64.exe)生成obj文件,并将其自动加入链接环节,最终合并到driver.sys中。
方案2:手动编译汇编后链接obj文件
如果已经用ML.exe生成了asmtest.obj,只需把该obj文件加入MSBuild的链接输入列表:
<ItemGroup> <!-- 填写asmtest.obj的绝对路径或相对项目目录的路径 --> <Link Include="asmtest.obj" /> </ItemGroup>
MSBuild在链接驱动时会自动将这个obj和其他编译生成的obj一起打包成最终的sys文件。
关键注意事项
- 汇编器版本要匹配驱动架构:x86驱动用ML.exe,x64驱动必须用ML64.exe,否则obj架构不兼容会导致链接失败。
- 手动编译汇编的命令示例:
- x86驱动:
ml /c /coff asmtest.asm - x64驱动:
ml64 /c asmtest.asm
- x86驱动:
- 检查驱动项目链接器配置:确认入口点(如
DriverEntry)、子系统设置为Windows Driver,避免因配置不兼容导致链接错误。
内容的提问来源于stack exchange,提问作者trapstar
相关产品推荐
相关产品推荐

