东莞网站建设市场,搜索引擎营销的主要方式有哪些?,建设商城网站报价,白酒最有效的推广方式VC支持的DLL#xff1a; DLL的编制与具体的编程语言及编译器无关#xff0c;动态链接库随处可见#xff0c;VC支持三种DLL#xff1a;非MFC动态库、MFC规则DLL和MFC扩展DLL。DLL导出函数#xff08;或变量、类#xff09;可供应用程序调用#xff1b;DLL内部函数只能在D…VC支持的DLL DLL的编制与具体的编程语言及编译器无关动态链接库随处可见VC支持三种DLL非MFC动态库、MFC规则DLL和MFC扩展DLL。DLL导出函数或变量、类可供应用程序调用DLL内部函数只能在DLL程序内使用应用程序无法调用它们。 导出函数的声明方式 一种在函数声明类型和函数名之间加上“_declspec(dllexport)”。 另外一种采用模块定义.def文件声明需要在库工程中添加模块文件格式如下 LIBRARY 库工程名称 EXPORTS 导出函数名 DLL的调用方式 一种静态调用由编译系统完成对DLL的加载和应用程序结束时DLL的卸载。 另外一种动态调用由编程者用API函数加载和卸载DLLDLL加载—DLL函数地址获取—DLL释放方式。 示例 一、 函数—-创建动态链接库MFC规则DLL 1. New–projects–MFC AppWizard(dll)–Regular DLL using shared MFC DLL //取名为MFC_dll 2. def文件中添加函数名Add_new 3. h文件中添加外部函数声明//求和函数函数名为Add_new extern “C” __declspec(dllexport) int __stdcall Add_new(int a,int b); 4. cpp文件中添加 外部函数实现 extern “C” __declspec(dllexport) int __stdcall Add_new(int a,int b) { return ab; } 5. build–set active configuration–win32 release–ok 6. 生成 7. 根目录下release文件夹中dll,lib与根目录下h文件即为所需 二、 函数—-调用动态链接库把MFC_dll.dll和MFC_dll.lib拷到工程所在目录 //静态调用.h可以写到.cpp文件中 1. new–projects–win32 console application–an empty project 2. 添加h文件(test.h) #pragma comment(lib,”MFC_dll.lib”) //告诉编译器DLL相对应的lib文件所在路径和文件名 extern “C”_declspec(dllimport) int _stdcall Add_new(int a,int b);//声明导入函数 3. 添加cpp文件(main.cpp) #include “test.h” int main() { coutAdd_new(10,3); return 0; } //动态调用 #include stdio.h #include windows.h typedef int (* lpAddFun)(int ,int);//定义一个与Add_new函数接受参数类型和返回值均相同的函数指针类型 int main() { HINSTANCE hDll;//句柄 www.2cto.com lpAddFun addFun;//函数指针 hDllLoadLibrary(“dllTest.dll”);//动态加载DLL模块句柄 if(hDll) { addFun(lpAddFun) GetProcAddress(hDll,”Add_new”);//得到所加载DLL模块中函数的地址 if(addFun) { int resultaddFun(2,3); printf(“%d”,result); } FreeLibrary(hDll);//释放已经加载的DLL模块 } return 0; } from:http://www.2cto.com/kf/201112/112977.html转载于:https://www.cnblogs.com/zhangmo/archive/2012/07/24/2607032.html