XYY-Game-Engine-封装和使用


title: XYY Game Engine 封装和使用
tags: [XYY,项目构建,c++]
categories:

  • c++
    date: 2021-07-10 22:32:10

XYY Game Engine 封装和使用

c++封装

将c++项目封装为一个动态链接库,向外只提供接口,这样不仅仅方便发行,更可以加快成程序运行的速度。将XYY项目封装的步骤如下:

  1. 将所有的声明定义为导出,以类作为示范。

即将

class XYY_GlobalDriver : public XYY_Driver
{
	public:
		int tag;
		void init();						// 初始化
		void run(XYY_SceneContent * sc);	// 运行
};

更改为

class __declspec(dllexport) XYY_GlobalDriver : public XYY_Driver
{
	public:
		int tag;
		void init();						// 初始化
		void run(XYY_SceneContent * sc);	// 运行
};
  1. 删除main函数,并写以下两个文件
//XYY_Game_Engine.h
#ifndef XYY_Game_Engine_H
#define XYY_Game_Engine_H
extern "C" _declspec(dllexport) void start();
#endif
//XYY_Game_Engine.cpp
#include <XYY_Game_Engine.h>
extern "C" _declspec(dllexport)void start()
{
	;
}

  1. 更改解决方案类型为dll

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jEnF9lL3-1628685293833)(/file/XYY-Game-Engine-封装和使用/1.png)]

  1. 将此处改为自己想要的

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SMw1xTaY-1628685293838)(/file/XYY-Game-Engine-封装和使用/2.png)]

  1. 生成解决方案

  2. 在解决方案目录中即可找到

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BoXBIfZI-1628685293841)(/file/XYY-Game-Engine-封装和使用/3.png)]

  1. 将项目的cpp文件删除,即将所有的实现删除只留下声明的接口,将刚刚插入的所有 __declspec(dllexport) 删除

  2. 打包发布。

动态链接库的使用

  1. 添加库目录和头文件目录以及添加对lib文件的依赖。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BFsf8ssp-1628685293845)(/file/XYY-Game-Engine-封装和使用/4.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3WDYDlba-1628685293848)(/file/XYY-Game-Engine-封装和使用/5.png)]
添加对lib文件的依赖也可以使用这样的预处理指令:

#pragma comment(lib,"XYY_Game_Engine.lib")
  1. 将dll文件放在项目的根目录下,或者放在和项目的解决方案exe的同目录。

  2. 示例,发现加载速度极快,因为所有的文件都是编译过的,但我不明白为什么加载也会加快。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-r3r56lEW-1628685293850)(/file/XYY-Game-Engine-封装和使用/6.png)]

构建DLL项目规范

项目结构

  1. 首先必须将声明和实现相分离。

  2. 项目在实现的时候就将code目录加入到包含目录中,即可以使用 #include <file.h> 自包

  3. 将所有使用到的代码全部放在code目录下,包括GLSL等,这样项目构建和项目使用就没有差别了。用户只需要将提供的code文件夹加入包含目录即可,当然,code文件夹是随意的,即为项目根目录也可。

  4. 提供项目本身代码 include 文件夹以及项目依赖dependence文件夹,用户需要把这两个文件夹放入包含目录中.

  5. 使用以下两种方法避免重复包含。推荐使用后一种。

#pragma once 

或者

//XYY_Game_Engine.h
#ifndef XYY_Game_Engine_H
#define XYY_Game_Engine_H
//code
#endif
  1. 写好注释
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值