博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Win7 VS2015 x64 MASM汇编语言编写DLL文件
阅读量:6708 次
发布时间:2019-06-25

本文共 1439 字,大约阅读时间需要 4 分钟。

有点坑记录一下。

首先创建工程时选控制台类型工程,Win32估计就应该选Win32的,反正我测试用的控制台。

然后选DLL类型,除了Empty其他全都去掉。

工程属性,masm勾上。

 

Linker >> Advanced里

Entry Point写上默认的入口函数

DllEntryPoint

Linker >> Input里

Module Definition File写上你所用的def文件名

建立asm和def文件,如下

 

ASM

 

.codeDllEntryPoint proc	mov rax, 1	retDllEntryPoint endpAddFun proc	mov eax, ecx	add eax, edx	retAddFun endpend

 

DEF

 

LIBRARY "ASM64DLLTest"  EXPORTS  AddFun

 

 

然后就可以了,只是一个简单的加法函数,对应C++版本为

__declspec(dllexport) int Add(int a, int b){	return (a + b);}

 

然后写个x64控制台程序测试一下。

 

#include 
#include
using namespace std;typedef int(*MYPROC)(int, int);int main(){ HINSTANCE hinstLib; MYPROC ProcAdd; BOOL fFreeResult = FALSE; // Get a handle to the DLL module. hinstLib = LoadLibrary(TEXT("ASM64DLLTest.dll")); // If the handle is valid, try to get the function address. if (hinstLib != NULL) { ProcAdd = (MYPROC)GetProcAddress(hinstLib, "AddFun"); // If the function address is valid, call the function. if (NULL != ProcAdd) { cout << (ProcAdd)(1, 2) << endl; cout << "LoadLibrary Success and Function Run" << endl; } else { cout << "LoadLibrary Success and GetProcAddress Fail" << endl; } // Free the DLL module. fFreeResult = FreeLibrary(hinstLib); if (fFreeResult == 1) { cout << "FreeLibrary Success" << endl; } else { cout << "FreeLibrary Fail" << endl; } } else { cout << "LoadLibrary Fail" << endl; } return 0;}

  

结果

 

 

转载于:https://www.cnblogs.com/kileyi/p/7257852.html

你可能感兴趣的文章
国际化环境下系统架构演化
查看>>
openlayers入门开发系列之批量叠加zip压缩SHP图层篇
查看>>
Javascript调用Webservice的多种方法 .
查看>>
Linux 启动、关闭、重启网络服务
查看>>
Sublime Text 相关
查看>>
深入理解css优先级
查看>>
android的armeabi和armeabi-v7a
查看>>
android自己定义控件系列教程-----仿新版优酷评论剧集卡片滑动控件
查看>>
lvs之 lvs+nginx+tomcat_1、tomcat_2+redis(lvs dr 模式)
查看>>
让“是男人就下到100层”在Android平台上跑起来
查看>>
hdu4292Food(最大流Dinic算法)
查看>>
webdriver API study
查看>>
【Machine Learning in Action --4】朴素贝叶斯过滤网站的恶意留言
查看>>
Ubuntu+Eclipse+ADT+Genymotion+VirtualBox开发环境搭建
查看>>
Android 学习之 开源项目PullToRefresh的使用
查看>>
Matplot中文乱码完美解决方式
查看>>
tomcat的webappclassloader中一个奇怪的异常信息
查看>>
漫谈程序猿系列:群星闪耀的黄金时代
查看>>
2016百度编程题:蘑菇阵
查看>>
webpack系列之一总览
查看>>