有点坑记录一下。

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

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

工程属性,masm勾上。

Linker >> Advanced里

Entry Point写上默认的入口函数

DllEntryPoint

Linker >> Input里

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

建立asm和def文件,如下

ASM

.code

DllEntryPoint proc
	mov rax, 1
	ret
DllEntryPoint endp

AddFun proc
	mov eax, ecx
	add eax, edx
	ret
AddFun endp
end

DEF

LIBRARY "ASM64DLLTest"
EXPORTS
AddFun

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

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

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

#include <iostream>

#include <windows.h> 

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;
}

  

结果

Win7 VS2015 x64 MASM汇编语言编写DLL文件的更多相关文章

  1. VC2010编写Dll文件(转)

    源:VC2010编写Dll文件 1. 打开VS2010[Flie / New / Project / Visual C++ / Win32 / Win32 Console Application]在下 ...

  2. C++编写DLL文件

    动态链接库DLL文件与EXE文件一样也是可执行文件,但是DLL也被称为库,因为里面封装了各种类.函数之类的东西,就像一个库一样,存着很多东西,主要是用来调用的.调用方式主要分为两种:隐式(通过lib文 ...

  3. C++ 编写DLL文件给易语言调用

    摸索了两天了,终于解决了所有问题,在此跟大家分享. 需要三个文件,dll_demo.h.dll_demo.cpp.dll_dome.def 直接上代码: 头文件如下: #ifndef _DLL_DEM ...

  4. C#直接使用DllImport调用C/C++动态库(dll文件)

    1.C/C++动态库的编写 下面是我编写的一个比较简单的C++dll文件用来测试,关于如何编写dll文件,我这里便不再赘述,不懂得自行查询, (1).h文件 #ifdef MYDLL_EXPORTS ...

  5. Windows中DLL文件的意义及其作用

    Windows中DLL文件的意义及其作用 DLL是Dynamic Link Library的缩写,意为动态链接库.DLL文件即动态链接库文件,是一种可执行文件,它允许程序共享执行特殊任务所必需的代码和 ...

  6. 17 win7 sp1 x64/VS2015下配置creo4.0二次开发环境——调用了众多开源库(ceres-solver,PCL1.8.0,office 2016COM接口,MySql数据库等)

    0 引言 本次开发环境的配置是在综合考虑了开源库的版本.VS版本以及CREO4.0的版本,同时针对甲方需求选择了win7 sp1 x64系统. 配置的过程中遇到了形形色色的问题,但是一一解决了.通过这 ...

  7. VS2015使用C++编写DLL,并在C#环境中调用【转】

    说明:本文是本人在学习封装DLL时看到的,觉得说得很清楚,为了防止忘记,特意复制下来学习用,原文链接:https://blog.csdn.net/songyi160/article/details/5 ...

  8. delphi 基础之三 编写和调用dll文件

    delphi 编写和调用dll文件   Windows 的执行文件可以划分为两种形式程序和动态连接库 (DLLs).一般程序运行是用.EXE文件,但应用程序有时也可以调用存储在DLL的函数. 在如下几 ...

  9. VS2015生成64位dll文件

    导入自己的源文件,准备生成DLL文件.也可以自己创建. 右键项目,进入属性,修改Configuration Type 为 DLL. 修改为64位,Configureation Manager -> ...

随机推荐

  1. I18nUtils

    import java.io.File; import java.io.FileInputStream; import java.io.InputStream; import java.util.*; ...

  2. Java IO浅析

    1.File类 /** * * @author lenovo * * File类 * pathSeparator * separator * * File() * boolean createNewF ...

  3. 用PS做圆角图片

    ps: Adobe Photoshop CS2  如果图片被锁定,请“双击”图层中“背景”解锁,如果没有图层菜单,在最上面导航栏中:窗口—图层.如下图:  点“确定”,解锁.  选用“圆角矩形工具”. ...

  4. Vue Checkbox全选和选中的方法

    <div class="search-content"> <Checkbox :value="checkAll" @click.prevent ...

  5. 关于163发邮件报错535 Error:authentication failed解决方法

    关于发邮件报错535 Error:authentication failed解决方法 调用163邮箱服务器来发送邮件,我们需要开启POP3/SMTP服务,这时163邮件会让我们设置客户端授权码,这个授 ...

  6. 02 while循环,密码登录

    i=3 username = "xzy" password = " while i>0: name = input("请输入你的用户名:") i ...

  7. jQuery.ajax()调用asp.net后台方法(非常重要)

    http://www.cnblogs.com/zxhoo/archive/2011/01/30/1947752.html 用JQuery的$.ajax()可以很方便的调用asp.net的后台方法. 先 ...

  8. Rocket MQ 1 - 用

    参考 http://www.iocoder.cn/categories/RocketMQ/ ; https://www.jianshu.com/nb/16219849 首先上启动方法,分别启动name ...

  9. java 泛型详解-绝对是对泛型方法讲解最详细的,没有之一

    对java的泛型特性的了解仅限于表面的浅浅一层,直到在学习设计模式时发现有不了解的用法,才想起详细的记录一下. 本文参考java 泛型详解.Java中的泛型方法. java泛型详解 1. 概述 泛型在 ...

  10. postgres on linux red hat 7 配置问题

    记录几个重点的东西吧,具体的步骤 不上了,网上有很多, 1.  redhat subscripiton需要订阅,没钱的需要去更换yum 源,也很简单,就是把自带的yum给删掉,重装其他的,大家可以百度 ...