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

亳州网站建设/福州网站排名推广

亳州网站建设,福州网站排名推广,tiktok官方网站入口,wordpress 随机浏览量本人菜鸟,文中若有代码、术语等错误,欢迎指正 我写的项目地址:https://github.com/liujianjie/GameEngineLightWeight(中文的注释适合中国人的你) 文章目录前言操作步骤讲解GitHubHazel项目此项目定位项目属性修改Sand…

本人菜鸟,文中若有代码、术语等错误,欢迎指正

我写的项目地址:https://github.com/liujianjie/GameEngineLightWeight(中文的注释适合中国人的你)

文章目录

  • 前言
  • 操作步骤+讲解
    • GitHub
    • Hazel项目
      • 此项目定位
      • 项目属性修改
    • Sandbox项目
      • 此项目定位
      • 项目属性修改
    • 写代码
      • Hazel项目
      • Sandbox项目
  • C++:静态链接与动态链接

前言

  • 此节目的

    新建好Hazel和Sandbox项目,Hazel项目生成为dll,Sandbox项目生成为exe,运行此exe通过动态链接Hazel的dll,可以调用dll定义的函数并输出信息。

  • Cherno的Hazel项目地址

    https://github.com/TheCherno/Hazel

操作步骤+讲解

GitHub

  • 新建空仓库

    请添加图片描述

  • 本地创建Hazel项目

    注意将解决方案和项目不放在同一目录

    请添加图片描述

  • Github仓库与本地项目关联

    • cmd输入命令克隆项目

      git clone https://github.com/username/Hazel2
      

      请添加图片描述

    • 将Hazel2文件夹里的文件都剪切到sln文件下的目录,然后删除Hazel2文件夹

      请添加图片描述

Hazel项目

此项目定位

Hazel是我们的引擎核心库,需生成为dll文件

然后创建外部应用程序项目生成为exe文件,将Hazel导出的dll链接到exe文件中。

项目属性修改

  • 删除32位的发布平台

  • 设置项目配置类型为dll

  • 调整输出目录和中间目录

    $(SolutionDir)\bin\$(Configuration)-$(Platform)\$(ProjectName)\
    $(SolutionDir)\bin-int\$(Configuration)-$(Platform)\$(ProjectName)\
    

请添加图片描述

中间目录:存储一些obj、二进制文件,生成好dll、exe后可以删除此文件夹

Sandbox项目

此项目定位

是exe应用程序

项目属性修改

  • 删除32位发布平台
  • 调整输出目录和中间目录
  • 设置项目配置类型为exe应用程序
  • 设置为启动目录

请添加图片描述

  • Sandbox项目引用Hazel项目

    请添加图片描述

    • 说明

      此引用将会链接Hazel.lib文件。

      难点:可Hazel明明设置为dll为什么还是能生成lib文件,因为lib文件中包含从dll文件中导出的所有函数,这样就不用手动从dll文件加载函数或符号。(不懂这含义)

    • 打开项目属性-链接器可以看到链接命令

      请添加图片描述

      这是视频里的,我本地却没有这行命令。。。

写代码

Hazel项目

  • 代码

    Test.h

    #pragma once
    namespace Hazel {_declspec(dllexport) void Print();
    }
    

    Test.cpp

    #include "Test.h"
    #include <stdio.h>namespace Hazel {void Print() {printf("Welcome to Hazel Game Engine!\n");}
    }
    
  • 项目生成

    请添加图片描述

Sandbox项目

  • 代码

    application.cpp

    namespace Hazel {_declspec(dllimport) void Print();
    }
    void main() {Hazel::Print();
    }
    
  • 项目生成

    请添加图片描述

  • 运行报错

    请添加图片描述

  • 解决bug

    由于Sandbox项目引用了Hazel项目,而Hazel又是dll文件,所以会报找不到Hazel.dll

    需要将Hazel.dll文件放到Sandbox.exe文件同目录下才行

    请添加图片描述

  • 正确运行结果

    请添加图片描述

C++:静态链接与动态链接

阅读的CSDN博客:https://blog.csdn.net/kang___xi/article/details/80210717

  • 静态链接

    • 说明

      使用静态库方式链接,编译后链接时会将使用的库函数对应所包含库函数定义的.o目标文件都包含在exe文件中。

    • 优点

      执行速度快:因为可执行文件程序内部包含了所有需要执行的东西

    • 缺点

      浪费空间:因为多个可执行程序对同所需要的目标文件都有一份副本

      更新慢:如果有一个.o目标文件发生改变,那么对应的使用这个.o目标文件的多个可执行程序需要重新来一遍链接过程,即链接多个.o目标文件来实现生成可执行文件。

  • 动态链接

    • 说明

      使用动态库方式链接,编译后因为推迟链接不会将使用的库函数对应的dll文件都包含在exe文件中,而是在exe运行的时候将dll加载到内存CPU中再链接。

    • 优点

      节省空间:多个可执行程序对同所需要的库函数共享一份副本

      更新快:一个源文件发生改变,只需更新编译成dll文件,不用每个可执行程序需要重新来一遍链接过程,因为多个可执行程序在运行时时链接,且共享一份副本

    • 缺点

      启动速度慢:因为每次执行程序都需要链接

    我对此小知识的思考:

    动态链接dll,是将整个dll都加载到内存中,还是说当前可执行文件使用了哪些库函数,将对应的函数定义加载到CPU中。

    问了同学和交流群的人,他们说是整个dll都加载到内存中。

http://www.jmfq.cn/news/5306113.html

相关文章:

  • 通化建设工程信息网站/uc浏览器关键词排名优化
  • 莘庄网站建设/网站策划书的撰写流程
  • 机关事业单位网站建设/哪个软件可以自动排名
  • 科技 网站建设/镇江网站
  • 棋牌网站建设/站长工具端口扫描
  • 网站建设公司 南宁/推广教程
  • 阿里巴巴公司网站建设/河南网络推广那家好
  • 全球网站建设服务商/网络营销特点
  • 吉林省建设厅证件查询网站/1元涨1000粉
  • 江苏省建设人才网站/百度一下你就知道移动官网
  • 网站建设实例大制作/交换链接适合哪些网站
  • 中国建设部建造师网站/广告推广软件
  • 建设网站合同/网站友情链接检测
  • 网站建设相关书籍/网页设计需要学什么软件
  • 山东网站建设费用/优化系统的软件
  • 哈尔滨网站建设工作室/搜索引擎推广实训
  • 天津网站建设服务/seo日常工作内容
  • 苏州市住房和城乡建设局网站首页/关键词挖掘ppt
  • 淄博周村网站建设公司/合肥seo推广公司哪家好
  • 建设一个门户网站需要多久/杭州seo网站推广排名
  • 衡水网站建设优化排名/北京网站建设开发公司
  • 网站建设怎么外包好/系统优化工具
  • 中国知名网站建设公司/谷歌网站
  • 制作精美网站建设独立/媒体软文发稿
  • 加强二级网站建设 招生/十大推广app平台
  • 网站优化建设桂林/韩国网站
  • 外国纪录片网站机场建设/广告精准推广平台
  • 江苏工程建设信息网站/百度快照怎么优化排名
  • 新疆乌鲁木齐建设职业学校网站/湖南株洲疫情最新情况
  • 龙岗区住房和建设局官方网站/如何注册百度账号