VC DLL编程笔记

VC DLL编程笔记

ID:37900223

大小:26.66 KB

页数:13页

时间:2019-06-02

VC DLL编程笔记_第1页
VC DLL编程笔记_第2页
VC DLL编程笔记_第3页
VC DLL编程笔记_第4页
VC DLL编程笔记_第5页
资源描述:

《VC DLL编程笔记》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、VCDLL编程笔记VC++ DLL编程笔记(一) Published by wonglaye 三月 24th, 2006 in VC  动态链接库DLL同静态Lib链接的区别在于:程序在编译成可执行文件时会把静态链接库中的程序拷进可执行文件中,所以Lib文件是不用同可执行 文件一同发布的。而链接到动态库DLL中时要通过一个Lib文件,Lib文件保存了函数或类在DLL中的入口地址,可执行文件中相应存放的也是函数地址, 所以DLL和Lib要同可执行文件一起发布。 1. VC中支持的DLL种类:Non MFC DLL,Regular DLL,Exetension DLL Non MFC DLL 非

2、MFC动态链接库:不使用MFC类库结构,直接用C写,输出函数用标准C接口,能被非MFC程序调用 Regular DLL 正则动态链接库:使用MFC编写,源文件中有继承自CWinApp的类,只能被MFC调用;正则Dll又分成静态连接到MFC的和动态链接到MFC的,在创建时会看到。 Extension DLL 扩展动态链接库:实现从MFC继承下来的新类,输出MFC新子类,只能被MFC调用 实践:在新建菜单中选择新建工程Win32 Dynamic Link Library,选择simple project,加入自己的函数MyFunction: #include “stdafx.h” //#incl

3、ude “DLL.h” //也可省略Extern “C”,它的作用是使其他语言可以访问到 extern “C”  _declspec(dllexport) int MyFunction();//可以将这一行放在DLL.h里,也可用.def文件创建 //入口地址 BOOL APIENTRY DllMain( HANDLE hModule, //指向自身的句柄                        DWORD  ul_reason_for_call, //Dll被调用的原因                        LPVOID lpReserved//保留参数       ) { 

4、 switch (ul_reason_for_call)//调用原因  {   case DLL_PROCESS_ATTACH://进程被调用   case DLL_THREAD_ATTACH://线程被调用   case DLL_THREAD_DETACH://进程被停止   case DLL_PROCESS_DETACH://线程被停止    break;     }     return TRUE; } int  MyFunction()//自定函数 {   return 886; } 编译后即可生成DLL文件和相应的Lib文件  VC++ DLL编程笔记(二) Published b

5、y wonglaye 三月 25th, 2006 in VC  调用DLL的方法:显式调用 隐式调用 显调:用LoadLibrary或AfxLoadLibrary显式调入Dll,再用GetProcAddress引入函数,最后用FreeLibrary或AfxFreeLibrary(参数是AfxLoadLibrary返回的句柄)释放Dll 隐调:需要加入动态链接库Lib文件,不需要调用LoadLibrayr或AfxLoadLibrary 实践隐调:新建一个工程DllDemo,将之前的Dll.dll和Dll.lib拷贝到工程目录下 // DllDemo.cpp : #include “stdafx

6、.h” #include “stdio.h” //#include “DllDemo.h” #pragma comment(lib,”Dll.lib”) //引入Dll.lib,也可在设置中link extern “C” _declspec(dllimport) int MyFunction();//导入MyFunction,也可放在头文件中,如果dll中有加extern,导入时也要加extern int main(int argc, char* argv[]) {  int result=MyFunction();  printf(”The number is %d r”,resul

7、t);  return 0; } VC++DLL编程笔记(三) Published by wonglaye 四月 5th, 2006 in VC  Dll的显式调用 将调试好的DLL文件和LIb文件拷贝到工程目录 主调函数的构造过程大致为: 1.typedef一个以dll内函数为类型、参数相同的函数指针,并用这个函数指针声明一个实例 2.LoadLibrary(”dll文件名”)返回一个HINSTANCE h

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。