为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

dll文件的用法

2011-11-25 2页 doc 31KB 27阅读

用户头像

is_449140

暂无简介

举报
dll文件的用法将dll文件放到目录下面。新建并添加main.c #include #include #include typedef int (*MYPROC)(int, int); int main() { HINSTANCE LibHandle; MYPROC ProcAdd,ProcSub; char dllbuf[] = "dll.dll";//dll的路径 char sysbuf[] = "add"...
dll文件的用法
将dll文件放到目录下面。新建并添加main.c #include #include #include typedef int (*MYPROC)(int, int); int main() { HINSTANCE LibHandle; MYPROC ProcAdd,ProcSub; char dllbuf[] = "dll.dll";//dll的路径 char sysbuf[] = "add"; /*过程名*/ char sysbuf1[] = "sub"; LibHandle = LoadLibrary(dllbuf); /*载入dll*/ ProcAdd = (MYPROC)GetProcAddress(LibHandle, sysbuf); /*获取函数sysbuf的地址*/ ProcSub = (MYPROC)GetProcAddress(LibHandle, sysbuf1); printf("%d\n",(ProcAdd)(3,6)); printf("%d\n",(ProcSub)(3,6)); } 动态调用dll dll文件的编写没有变化。(有dll4.def文件防止发生名字改编) 调用如下: //动态调用 HINSTANCE hIst; hIst = LoadLibrary("dll4.dll"); typedef int (_stdcall *ADDPROC)(int a, int b); ADDPROC Add = (ADDPROC)GetProcAddress(hIst, "add"); if(!Add) { AfxMessageBox("get address error."); return; } int iRet = Add(5, 10); CString strMsg; strMsg.Format("%d", iRet); AfxMessageBox(strMsg); hIst = LoadLibrary("dll4.dll"); 是加载动态链接库 typedef int (_stdcall *ADDPROC)(int a, int b); 定义一个和dll导出函数一至的原型函数 ADDPROC Add = (ADDPROC)GetProcAddress(hIst, "add"); 根据函数名,得到函数地址 注意:因为dll改变了调用约定,所以在声明函数原型时,也加上了_stdcall ,否则应该如下: typedef int (*ADDPROC)(int a, int b); 注意:如果dll导出函数发生了名字改编,再用dll中函数的名字则会出错。要用dumpbin中看到的名字。或者用 ADDPROC Add = (ADDPROC)GetProcAddress(hIst, MAKEINTRESOURCE(1)); 根据序号来取得函数地址,但这种方法不太好。 在不需要使用动态链接库时,可以调用FreeLibrary(hIst);来释放动态链接库 所以在以后dll的使用中可以: a. 使用def文件防止名字改编 b. 使用动态调用
/
本文档为【dll文件的用法】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索