当前位置: 首页 > news >正文

网站优化建设苏州网页怎么做成app

网站优化建设苏州,网页怎么做成app,移动网站建设方面,葫岛百度seo如题#xff0c;我们本篇介绍如何制作DLL#xff0c;将代码类中的方法以接口的形式暴露出来给exe程序使用。会涉及类厂创建方法实例、声明DLL接口、.def文件的使用等。 目录 一、DLL介绍 二、C制作DLL文件 2.1 DLL端 2.2 调用端 三、DLL导出类方法 四、COM技术制作DLL…        如题我们本篇介绍如何制作DLL将代码类中的方法以接口的形式暴露出来给exe程序使用。会涉及类厂创建方法实例、声明DLL接口、.def文件的使用等。 目录 一、DLL介绍 二、C制作DLL文件 2.1 DLL端 2.2 调用端 三、DLL导出类方法 四、COM技术制作DLL 一、DLL介绍 我理解的DLL是windows下的可执行文件也就是PE文件学名动态链接库。一般调用DLL也称加载DLL的是EXE文件。它是一种可重用的代码和数据的集合可以由多个应用程序同时使用与静态链接库不同动态链接库在运行时加载到内存中以供应用程序使用。 一个exe程序可以带若干个dll如下图 正常的windows程序基本都会带DLL包括操作系统内核的DLL所以很关键。 DLL具有以下优点 可重用性由于多个应用程序可以共享一个DLL因此它们可以共享相同的代码和数据从而提高了代码的可重用性。         节省内存由于DLL在运行时才加载到内存中因此它们可以在不占用过多内存的情况下提供所需的功能。         易于更新当需要更新DLL时只需替换现有的DLL文件即可而无需重新编译使用该DLL的应用程序。         动态链接DLL在运行时才链接到应用程序中因此它们可以在应用程序启动后动态加载从而提高了应用程序的启动速度。         稳定性由于多个应用程序共享相同的DLL因此如果DLL中的代码或数据发生问题则可以在一次更新后修复所有使用该DLL的应用程序。 使用DLL的过程分为两个步骤首先需要创建一个DLL然后在需要使用该DLL的应用程序中加载它。为了使DLL中的函数可以在应用程序中使用必须将其导出可以使用__declspec(dllexport)修饰符来导出DLL中的函数和数据。而在应用程序中调用DLL中的函数需要使用LoadLibrary()函数来加载DLL并使用GetProcAddress()函数获取DLL中导出函数的地址然后使用函数指针来调用这些函数。 在Linux下与之对应的是.so文件。MacOs下为.dylib。 二、C制作DLL文件 需要打开你的windows Visual Satdio任意版本。可以直接选择创建DLL文件也可以先创建平台程序后续再改。 这里直接展示一段简单的代码。 2.1 DLL端 DllDLL.h: #pragma once #ifdef MYLIBRARY_EXPORTS #define MYLIBRARY_API __declspec(dllexport) #else #define MYLIBRARY_API __declspec(dllimport) #endifMYLIBRARY_API int Add(int a, int b); DllDLL.cpp: #include DllDLL.hint Add(int a, int b) {return a b; } DllDLL.def模块定义: LIBRARY GeneratrDLL EXPORTS Add 1模块定义需要在这设定 重点 .def文件也称为导出文件是一种Windows平台上的文件格式用于描述可执行文件或动态链接库DLL中导出函数的名称和地址。当编写一个DLL并将其与其他应用程序链接时该DLL中的函数必须明确导出以便其他应用程序能够调用这些函数。 2.2 调用端 代码 #include ..\DllDLL\DllDLL.h #include windows.h #include iostream typedef int(*AddFunc)(int, int);int main() {HINSTANCE hinstLib LoadLibrary(TEXT(DllDLL.dll));if (hinstLib ! NULL){AddFunc add (AddFunc)GetProcAddress(hinstLib, Add);if (add ! NULL){// 调用 DLL 中的函数int result add(1, 2);std::cout result std::endl;}}}将UseDllDLL设置为启动项运行结果DLL内部返回方法的结果 三、DLL导出类方法 我们定义一个MyInterface基类里面实现虚方法再生成一个它的派生类实现虚方法最后创建类工厂让客户端代码更容易实例化类对象。 // MyInterface.h #ifndef MY_INTERFACE_H #define MY_INTERFACE_Hclass MyInterface { public:virtual ~MyInterface(){}virtual void DoSomething() 0;virtual int GetNumber() 0; };class MyImplementation : public MyInterface { public:virtual void DoSomething() override;virtual int GetNumber() override; }; #endif // MY_INTERFACE_H// MyImplementation.cpp #include MyInterface.hvoid MyImplementation::DoSomething() {// }int MyImplementation::GetNumber() {return 49; }// MyDLL.h #ifndef MY_DLL_H #define MY_DLL_H#ifdef MY_DLL_EXPORTS #define MY_DLL_API __declspec(dllexport) #else #define MY_DLL_API __declspec(dllimport) #endif#include MyInterface.hMY_DLL_API MyInterface* CreateMyObject();#endif // MY_DLL_H// MyDLL.cpp #define MY_DLL_EXPORTS #include MyDLL.h #include MyInterface.hMyInterface* CreateMyObject() {return new MyImplementation(); } 上面代码的最后两端将MyInterface* 类的对象作为导出接口它的我实现是返回它的派生类MyImplementation类的实例对象。客户端可以使用CreateMyObject获得实例。 客户端调用DLL首先要有实现DLL的头文件MyInerface.h然后去调用具体 #include ..\GeneratrDLL\MyInterface.h #include Windows.h #include iostreamint main() {// 加载DLLHMODULE hModule LoadLibrary(LC:\\Users\\liubw\\source\\repos\\GeneratrDLL\\x64\\Debug\\GeneratrDLL.dll);if (hModule ! NULL){// 获取接口typedef MyInterface* (*CreateMyObjectFunc)();CreateMyObjectFunc fun (CreateMyObjectFunc)GetProcAddress(hModule, CreateMyObject);if (fun ! NULL){// 使用接口MyInterface* myObject createMyObject();myObject-DoSomething();int number myObject-GetNumber();std::cout number std::endl;delete myObject;}else{// 无法获取接口}// 卸载DLLFreeLibrary(hModule);}else{// 无法加载DLL}return 0; } 其中typedef MyInterface* (*CreateMyObjectFunc)();声明了MyInterface*函数指针的函数CreateMyObjectFunc并且没有参数我们可以用CreateMyObjectFunc代替返回值为MyInterface*的函数的声明。具体如下 https://bobowen.blog.csdn.net/article/details/129189507?spm1001.2014.3001.5502 四、COM技术制作DLL 这个是老技术比较复杂后续更新。
http://www.w-s-a.com/news/485753/

相关文章:

  • 移动网站设计与制作网站开发接私活
  • 视频制作素材网站wordpress mysql 被删
  • 静态网站 模板公司一般都用什么邮箱
  • 做网站效果图是用ps还是ai泰安人才网最新招聘信息2022年
  • 免费建站网站一级大录像不卡在线看网页郑州网站关键
  • 做网站 然后百度推广哈尔滨建筑网
  • 章丘营销型网站建设网站测评必须做
  • 营销者网站怎么把网站黑了
  • 律师事务所手机网站校园网站设计
  • 网站案例展示分类网站响应速度优化
  • 风景网站的制作网站ip地址查询域名
  • 怎样看网站是谁做的马鞍山什么房产网站做的好
  • 西安推荐企业网站制作平台软装设计方案ppt
  • 网站静态页模板专业网站设计开发公司
  • 手机免费在线搭建网站短网址生成防红
  • 天津网站设计网站制作如何新建wordpress
  • 山东省建设备案网站审批国际新闻最新消息10条简短
  • 成都市建设网扬尘监控网站短域名转换
  • 怎么做手机网站潍坊建设银行网站
  • 做网站分什么软件品牌设计培训
  • 太原网站设计排名设计本装修效果图
  • 网站个人中心模板石家庄网站系统开发
  • 优秀的电子商务网站教育公司网站建设文案
  • 网站开发市场成本网站链接推广工具
  • 猪八戒做网站排名常州seo博客
  • wordpress 网站遭篡改如何优化公司的网站
  • 汉中公司做网站网站建设的风格设置
  • 网站建议怎么写怎么做网页连接
  • 站长工具seo综合查询下载安装软件平台搭建包括哪几个方面
  • 做网站怎么存放视频支付功能网站建设