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

商务型网站有哪些邯郸做移动网站多少钱

商务型网站有哪些,邯郸做移动网站多少钱,商标设计一般多少钱,济南做网站本人菜鸟#xff0c;文中若有代码、术语等错误#xff0c;欢迎指正 我写的项目地址#xff1a;https://github.com/liujianjie/GameEngineLightWeight#xff08;中文的注释适合中国人的你#xff09; 文章目录前言关键操作代码文件关键代码代码流程代码文件关键代码exter… 本人菜鸟文中若有代码、术语等错误欢迎指正 我写的项目地址https://github.com/liujianjie/GameEngineLightWeight中文的注释适合中国人的你 文章目录前言关键操作代码文件关键代码代码流程代码文件关键代码extern外部定义CreateApplication包含头文件条件编译和宏定义实现Dll导入与导出代码流程运行效果Github涉及的C知识前言 此节目的 将上一小节的main函数入口点写在Hazel项目中由引擎内部控制。 优化dll导出导入代码用条件编译宏定义来编写dll导出与导入代码 Cherno本节完整代码链接 https://github.com/TheCherno/Hazel/commit/f9fbbd2bf3d870a6586c5c4f70a867d78e27b113 关键操作 Hzel项目 右键属性(所有配置)C/C预处理器预处理器定义 输入 HZ_PLATFORM_WINDOWS;HZ_BUILD_DLL Sandbox项目 右键属性(所有配置)C/C预处理器预处理器定义 输入 HZ_PLATFORM_WINDOWS; 右键属性(所有配置)C/C常规附加包含目录 输入 $(SolutionDir)Hazel\src 为了Sandbox项目能引入Hazel项目的文件 #include Hazel.h代码文件关键代码代码流程 代码文件 Hazel项目 Application类 引擎内部功能实现 Core.h 来根据不同项目的条件编译而写dll导入还是导出的宏定义 EntryPoint.h 入口点main函数 Hazel.h 引入其它头文件控制给Sandbox项目提供哪些引擎内部功能 Sandbox项目 SanboxApp.cpp 应用层实现 关键代码 extern外部定义CreateApplication 在Hazel项目的Application.h中 namespace Hazel {class HAZEL_API Application{....};// To be defined in CLIENTApplication* CreateApplication(); }在Hazel命名空间内声明了CreateApplication函数 在Sandbox项目的SandboxApp.cpp中 Hazel::Application* Hazel::CreateApplication() {return new Sandbox(); }定义了CreateApplication函数 在EntryPoint.h中调用 extern Hazel::Application* Hazel::CreateApplication(); int main(int argc, char** argv){auto app Hazel::CreateApplication();... }将CreateApplication函数声明为extern表示此函数会在外部定义接下来使用的这函数时将使用在外部定义的CreateApplication 包含头文件条件编译和宏定义实现Dll导入与导出 在Core.h中 #pragma once #ifdef HZ_PLATFORM_WINDOWS#ifdef HZ_BUILD_DLL#define HAZEL_API __declspec(dllexport)#else#define HAZEL_API __declspec(dllimport)#endif #else#error Hazel only supports Windows! #endif根据条件编译定义HAZEL_API是dll导入还是导出由上的关键操作小点可知Hazel项目将是__declspec(dllexport)Sandbox项目是__declspec(dllimport) 问题在于这关Sandbox项目何事这明明是Hazel项目中的头文件 由于Sandbox#include Hazel.h而Hazel项目的Hazel.h包含了Application.hApplication.h又包含了Core.h文件 所以这Core.h的代码也会被拷贝到Sandbox项目的SandboxApp.cpp中#include Hazel.h的位置 并且Application.h也会被拷贝到Hazel.h的位置。 #include Hazel.h class Sandbox : public Hazel::Application { public:Sandbox(){}~Sandbox(){} }; .....所以Sandbox项目也有HAZEL_API宏定义且是__declspec(dllimport) 所以SandboxApp.cpp的代码将变成 #pragma once #ifdef HZ_PLATFORM_WINDOWS#ifdef HZ_BUILD_DLL#define HAZEL_API __declspec(dllexport)#else#define HAZEL_API __declspec(dllimport)#endif #else#error Hazel only supports Windows! #endif namespace Hazel {class HAZEL_API Application// HAZEL_API被替换成__declspec(dllimport){public:Application();virtual ~Application();void Run();};// To be defined in CLIENTApplication* CreateApplication(); } ....省略EntryPoint.h的代码下面将运行流程会有.... class Sandbox : public Hazel::Application { public:Sandbox(){}~Sandbox(){} }; .....所以Sandbox类导入了dll中的Application类且可以继承Application。 对应003节的代码 #pragma once namespace Hazel {_declspec(dllexport) void Print();// 导出 }namespace Hazel {_declspec(dllimport) void Print(); // 导入 } void main() {Hazel::Print();// 使用 }代码流程 开始运行Sandbox.exe 由于Sandbox中#include Hazel.h而Hazel项目的Hazel.h包含了Application.h和EntryPoint.h入口文件 Hazel.h #pragma once // For use by Hazel applications #include iostream #include Hazel/Application.h // ---Entry Point--------------------- #include Hazel/EntryPoint.h // -----------------------------------EntryPoint.h定义了main函数即写了入口点所以程序会在这运行 因为SandboxApp.cpp在第一行包含Hazel.hHazel.h又包含EntryPoint.h那么EntryPoint.h的代码会被拷贝到SandboxApp.cpp中 #include Hazel.h将拥有以下EntryPoint.h中的代码 #pragma once #ifdef HZ_PLATFORM_WINDOWS extern Hazel::Application* Hazel::CreateApplication(); int main(int argc, char** argv) {std::cout Core::main std::endl;auto app Hazel::CreateApplication();app-Run();delete app; } #endifmain函数中执行CreateApplication函数将调用定义在SandboxApp.cpp中的CreateApplication函数 Hazel::Application* Hazel::CreateApplication() {return new Sandbox(); }这函数返回的指针是Hazel项目中的Application父类指针所以auto app的类型是Application*。 当执行app-Run()函数时由于Run()函数没有声明为虚函数所以会调用Application中的Run()函数 #include Application.h namespace Hazel {Application::Application(){}Application::~Application(){}void Application::Run(){while (true);} }Application的Run函数是一个while循环所以循环会无限制运行中 运行效果 需要把最新生成的Hazel.dll放在Sandbox.exe文件夹下 Github .gitignore 在.git文件夹下新建.gitignore文件可以声明一些不想提交到暂存区的文件 # Binaries **/bin/ bin-int/# Visual Studio files and folder .vs/ **.sln **.vcxproj **.vcxproj.filters **.vcxproj.user **.csproj其它命令 git add *// 提交文件到暂存区 git reset . // 将暂存区文件返回 git status // 查看文件有无提交到暂存区状态 git commit -m 注释// 将暂存区的内容添加到仓库 git push origin main // 将本地的分支版本上传到远程并合并涉及的C知识 对应此节代码地方 Hazel::Application* Hazel::CreateApplication() {return new Sandbox(); } auto app Hazel::CreateApplication(); app-Run();转换为以下容易理解的代码 #include iostream using namespace std;class Application { public:void Run() {cout Application::Run() endl;} }; class Sandbox : public Application { public:void Run() {cout Sandbox::Run() endl;} }; void main() {Application* app new Sandbox();app-Run();// 由于Run()函数没有声明为virtual虚函数所以执行父类的Run函数 }
http://www.w-s-a.com/news/903224/

相关文章:

  • 微网站 域名企业网站怎么做推广
  • 兴安盟住房和城乡建设部网站在国外做网站
  • 南雄市建设局网站搜索关键词的方法
  • 网站建设维护工作经验深圳定制展会
  • 新闻类网站备案WordPress评论昵称显示错误
  • 如何建立一个个人网站自己做一个购物网站
  • 吴忠网站建设公司中国建筑股份有限公司 官网
  • 深圳电商网站开发公司page list wordpress
  • 长安外贸网站建设顺德区网站设计建设企业
  • 临沂市建设局网站简介专业建设网站开发
  • 肇庆网站制作设计中国企业500强招聘
  • 苏州厂房装修宁波seo网络推广外包报价
  • 文山知名网站建设惠州哪家做网站好
  • 物流网站风格网站登录密码保存在哪里设置
  • 免费网站怎么建立icodepython基础教程
  • 无障碍网站建设方案wordpress 任务管理系统
  • iis5.1发布网站中小企业网络营销存在的问题研究论文
  • 阳泉软件定制网站建设网站可以做多语言的吗
  • 建设网站的目的及功能定位主要包括哪些内容百度关键词优化
  • 开一个小程序要多少钱宁波seo网络推广外包报价
  • 网站备案最新备案号电子商务网站建设的规章制度
  • wordpress制作单页网站导航页面鞍山信息港招聘信息
  • 屏蔽ip地址访问网站自己做衣服的网站
  • 网站建设 域名业务 邮箱哪里有网站建设中心
  • 免费网站赚钱重庆建设摩托车股份有限公司
  • 合肥水运建设工程监理网站自己买服务器能在wordpress建网站
  • wordpress积分商城主题整站seo排名要多少钱
  • 鲜花网站建设的利息分析网站设计与制作专业
  • 深圳网站建设排名做网站的公司高创
  • 杭州哪家做外贸网站全国物流网站有哪些平台