动态库的显式链接和隐式链接

1.显式链接
例如导入函数如下
int sum(int a,int b);
那么显式调用时,首先定义一个函数指针,
typedef int (*f)(int,int)
然后加载动态库,
HINSTANCE handle=LoadLibrary("t.dll");
接着得到该函数的指针
f f1=GetProcAddress("sum");
那么就可以利用函数指针f1使用该函数了
最后,用完后释放库文件
FreeLibrary("t.dll");
2.隐式链接
隐式链接又分为两种方法。
2.1在工程中设置添加的动态导入库,然后再源程序中添加头文件即可
2.2在源程序中添加代码pragma comment(lib,"t.lib");然后添加头文件即可
在msvc调用mingw动态库时,由于g++生成的导入库是.a格式的,在msvc中无法识别,因此需要用到msvc的lib工具进行生成,此时需要两个文件.dll和.def文件,如果没有.def文件,需要先用dumpbin命令生成它,并修改成正确的格式,然后生成.lib文件。
dumpbin /exports my.dll>my.def
lib /machine:ix86 /def:my.def
在mingw中对应的转换工具为pexports(生成.def),dlltool(生成.a)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值