test 记录我的第一个MASM dll 编译过程
前言
` 刚从CODEBLOCKS转到VSCODE, 虽然只有几天的时间, 但已经喜欢上了。
个人随笔 勿喷 。
一、VS CODE 插件
1: CMAKE
2: CMAKE TOOLS
二、测试代码
代码如下(示例):
.386
.model flat, stdcall
option casemap :none
; include windows.inc
ExitProcess Proto exitCode:dword ; 测试使用的api
MessageBoxA Proto hWnd:dword, text:dword, title:dword, :dword
includelib kernel32.lib
.data
.code
DllEntry proc hinstDLL:DWORD, fdwReason:DWORD, a3:DWORD
mov eax, a3
mov eax, hinstDLL
mov eax, fdwReason
cmp eax,1
jnz DLL_THREAD_ATTACH
;-------------------------------;进程附加-----------------------------------
; DLL_PROCESS_ATTACH
;do
mov eax,1
ret
DLL_THREAD_ATTACH:
cmp eax,2
jnz DLL_THREAD_DETACH
call ExitProcess
;-------------------------------线程附加-----------------------------------
; DLL_THREAD_ATTACH
mov eax,1
ret;
DLL_THREAD_DETACH:
cmp eax,3
jnz DLL_PROCESS_DETACH
;-------------------------------线程卸载-----------------------------------
; DLL_THREAD_DETACH
mov eax,1
ret;
DLL_PROCESS_DETACH:
cmp eax,4
jnz _exit
;-------------------------------进程卸载-----------------------------------
; DLL_THREAD_DETACH
_exit:
mov eax,0
ret
DllEntry endp
end DllEntry
2.CMakeLists.txt
代码如下(示例):
cmake_minimum_required(VERSION 3.0.0)
project(test VERSION 0.1.0)
enable_language(ASM_MASM) # 这里要使用ASM_MASM, 无这句, 编程通不过
add_library(${PROJECT_NAME} SHARED test.asm) # STATIC == LIB SHARED == DLL
总结
整体的过程是:
1: F1 CMAKE:快速入门 (生成项目) -> 输入项目名 -> 点击 liibrary 或 Executable
2: 编写asm代码
3: 修改 CMakeTists.txt.
4:点击下方的 Build 构建生成