VS2022配置x86/x64调用32位和64位汇编语言动态库环境
本篇记录VS2022调用32位和64位汇编语言动态库的环境配置。
1.VS2022配置X86汇编语言调用32位动态库。
1.打开VS2022,创建新项目,选择Window桌面向导,下一步。
2.填写项目名称,设置项目位置,点击【创建】按钮
3.设置桌面项目为空项目,然后点周【确定】按钮
4.空项目创建成功
5.把整个动态库文件夹Irvine复制到C盘根目录:
6.配置汇编语言环境,右键项目名====》生成依赖项====》生成自定义
7.钩选masm选项,然后【确定】
8.点击Debug右边的平台下拉菜单,==》选择配置管理器
9.平台配置,点击下拉菜单的编辑,选择编辑
10.把x64平台移除,然后点【关闭】按钮
活动解决方案的平台也一样,把x64平台删除
11.新建一个汇编语言源文件,右键===》添加===》新建项
选择c++文件,输入完整的源文件名call32lib.asm
12.输入以下源代码进行编译
; call32lib.asmINCLUDE Irvine32.inc
.data.code
main PROCcall Crlfcall WaitMsg ; "Press any key..."main ENDP
END main
13.编译报错,提示不能打 Irvine32.inc文件,即是没有找到这个文件,
14.右键项目==》属性 进行配置:
链接器==》常规==》附加库目录,输入库路径
链接器==》输入==》附加依赖项,输入依赖库名称
链接器==》高级==》随机基址,选【否】
Microsoft Macro Assembly ==》General==》Include Paths输入库路径,然后确定
15.再次编译,成功,输入文字
======================================================
2.VS2022配置X64汇编语言调用64位动态库。
1.打开VS2022,创建新项目,选择Window桌面向导,下一步。
2.填写项目名称,设置项目位置,点击【创建】按钮
3.设置桌面项目为空项目,然后点周【确定】按钮
4.空项目创建成功
5.配置汇编语言环境,右键项目名====》生成依赖项====》生成自定义
6.钩选masm选项,然后【确定】
7.点击Debug右边的平台下拉菜单,==》选择配置管理器
8.平台配置,点击下拉菜单的编辑,选择编辑
9.把Win32平台移除,然后点【关闭】按钮
10活动解决方案的平台也一样,把x64平台删除
11.新建一个汇编语言源文件,右键===》添加===》新建项
选择c++文件,输入完整的源文件名call64lib.asm
12.输入以下源代码进行编译
; call64lib.asmExitProcess PROTO
WriteInt64 PROTO
Crlf PROTO
Random64 PROTO
RandomRange PROTO
Randomize PROTO.code
main procsub rsp,8 ; align the stack pointersub rsp,20h ; reserve 32 bytes for shadow parameterscall Randomizemov rcx,20
L1:mov rax,234324243242call RandomRange ; returns RAX = random value call WriteInt64call Crlfloop L1add rsp,28h ; restore stack pointer (optional)mov ecx,0call ExitProcess
main endpend
13.编译报错,提示不能打 Irvine32.inc文件,即是没有找到这个文件,
14.Irvine64.obj文件放到工程 目录下:
15.右键项目==》【添加】===》【现有项】
16.把Irvine64.obj文件添加到项目中
17.编译调试,出错
18.没有找到main入口点,右键项目==》属性==》链接器==》高级==》入口点,输入main
19.编译,运行调试
链接器==》系统==》启用大地址,选【否】
20.设置完成后,再次编译运行调试:
调用成功,显示随机数字