动态链接库学习笔记

动态链接库学习笔记

在导入的函数可以用extern声明,也可以用_declspec(dllimport)声明。

例如:_declspec(dllimport) int add(int a,int b);

 

通过dumpbin –exports DLL.dll来查看导出的动态链接库的函数。

若系统提示dumpbin不是系统的命令,则需要注册dumpbin环境变量,打开VC安装目录的bin文件夹,里面有vcvars32.bat注册环境变量。

 

HWND GetForegroundWindow()得到当前工作窗口的句柄。

使用windowsAPI函数,需要包含<windows.h>

 

同样用动态链接库导出类的情况

_declspec(dllexport)class Point{

};

若只导出类中的某个成员函数,则

Class Point{

Public:

         _declspec(dllexport) void output(int x,int y);

};

 

2、若要导出的函数名字不发生改变,可以用extern“C”来声明函数,用extern “C”做声明只能对全局函数,不能是类的成员函数。

3、若调用约定发生改变,则用extern “C”也不能保证函数名不发生变化,这时增加一个def模块定义文件。

LIBRARY DLL   注意要和动态链接库文件名匹配

 

EXPORTS

Add

Subtract

 

4、动态链接库可以隐式连接,也可以动态加载

隐式链接需要加载lib库和dll文件。

动态加载方式:

HINSTANCE hInst;

hInst=LoadLibrary(L"DLL.dll");

typedef int (*ADDPROC)(int a,int b);

ADDPROCAdd=(ADDPROC)GetProcAddress(hInst,"add");

可以再需要的时候加载动态链接库。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值