DLL学习2

本文介绍了如何在DLL中导出函数以及如何在应用程序中导入这些函数。通过示例展示了使用_declspec(dllexport)来导出函数,并使用_declspec(dllimport)来导入函数的方法。此外,还介绍了动态链接库的搜索顺序及依赖检查工具。

 新建Win32 Dynamic-Link Library类型的工程DLL1.dll

int add (int a, int b)

{

  return a + b;

}

int subtract (int a, int b)

{

  return a - b;

}

应用程序如果想要访问某个DLL中的函数,那么该函数必须是已经被导出的函数.

cmd -> dumpbin.exe

cmd -> dumpbin -exports *.dll

为了让DLL导出一些函数,需要在每一个将要被导出的函数前面添加标识符:_declspec(dllexport)

_declspec(dllexport) int add (int a, int b)

{

  return a + b;

}

_declspec(dllexport) int subtract (int a, int b)

{

  return a - b;

}

新建基于对话框的MFC应用程序DllTest

Project/Settings -> link -> Object/library modules -> DLL1.lib

搜索动态链接库的顺序:
1、程序的执行目录   DllTest/Debug
2、当前目录
3、系统目录 依次是C:/WINNT/system32, C:/WINNT/system, C:/WINNT
4、path环境变量中所列出的路径
dumpbin -imports DllTest.exe


为了查看一个可执行模块依赖的动态链接库,除了用Dumpbin命令外,还可用VS提供的Depends来实现

除了用extern表明函数是外部定义的之外,还可以用_declspec(dllimport)
_declspec(dllimport) int add(int a, int b);
_declspec(dllimport) int subtract(int a, int b);
比起extern,用_declspec(dllimport)声明时,它将告诉编译器该函数是从动态链接库中引入的,编译器可以生成运行效率更高的代码。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值