VC中调用dll函数的两种方法

</pre>一、显式调用1、定义函数指针 typedef int (*dll_mul)(int a,int b);2、加载dll,并获取其程序实例句柄HINSTANCE hdll=loadlibrary("c:/cppDll.dll");3、从dll实例句柄中获取函数指针dll_mul mymul=(dll_mul)GetProcAddress(hdll,"mul");4、使用获取的函数int sum=mymul(5,6);<p>源代码如下:</p><p></p><pre name="code" class="cpp">#include "stdafx.h"
#include "windows.h"
typedef int(*dll_add)(int a,int b);//定义函数指针


int _tmain(int argc, _TCHAR* argv[])
{
	HINSTANCE hDll=LoadLibrary("c:/CppDll.dll");//加载dll并获取实例句柄
	dll_add myadd=(dll_add)GetProcAddress(hDll,"mul");//找到函数地址

	int sum=myadd(5,6);
	printf("sum=%d",sum);
	system("pause");
	return 0;
}

二、隐式调用
1、将cppDll.dll拷贝至系统环境变量中指定的位置,如C:\Windows\System32。
2、声明dll中的函数
int div(int a,int b);
3、导入CppDll.lib静态链接库,通过lib获取函数在dll中的偏移地址,从而找到函数
 #pragma comment(lib,"c:/CppDll.lib");
4、使用函数
int num=div(6,2);

源代码如下:


#include "stdafx.h"
#include "windows.h"
int mul(int a,int b);//声明函数
#pragma comment(lib,"c:/CppDll.lib");// 导入lib函数,获取函数的偏移地址

int _tmain(int argc, _TCHAR* argv[])
{
	int num=mul(2,3);//使用函数
	printf("num=%d",num);
	system("pause");
	return 0;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值