跟cherno手搓游戏引擎【1】:配置与入口点

环境配置:


编译环境:VS2019

创建两个项目:

设置Sandbox为启动项:

设置sandbox的配置属性-常规-输出目录\中间目录为如下:

 预处理定义:为了配置一些只有windows才能用的函数。

设置YOTOEngin(我自己起的名字)配置属性-常规-输出目录\中间目录为如下:配置类型改为dll。


 

预处理定义:为了配置一些只有windows才能用的函数,并且在core.h中区分在此包中,是dll导出还是导入。

附加包含目录:用来包含#include<YOTO.h>

按下列格式创建文件:bin和bin-int为自动生成的文件:

架构理解:(个人理解)

Sandbox和YOTOEngine是分离的,即引擎的功能单独写在YOTOEngine里,Sandbox只是功能的启动、配置器(客户端)。目前还不太懂为什么这么设计,只是个猜测,作者太菜啦。

代码部分:


YOTOEngine:

core.h:用于dll配置

核心:因为__declspec(dllexport) 只在window支持,且在不同包下dll导入导出不一样。为什么下面没有用import呢,这个我查了下,可以不用import,除了静态类。

(关于__declspec(dllimport)的理解-CSDN博客)

#pragma once
//用于dll的宏
#ifdef YT_PLATFORM_WINDOWS
#ifdef YT_BUILD_DLL
#define YOTO_API __declspec(dllexport) 
#else
#define YOTO_API __declspec(dllimport) #endif // DEBUG
#else
#error YOTO_ONLY_SUPPORT_WINDOWS
#endif // YOTO_PLATFORM_WINDOWS

Application.h:定义了一个Run函数,即启动程序,需要一个入口,继承此类

#pragma once
#include"Core.h"
namespace YOTO {class YOTO_API Application{public:Application();virtual ~Application();void Run();};//在客户端定义Application* CreateApplication();
}

Application.cpp

#include "Application.h"
namespace YOTO {Application::Application() {}Application::~Application() {}void Application::Run() {while (true){}}
}

EntryPoint.h:入口点,主函数,这个作用就是把客户端和引擎分离开

#pragma once#ifdef YT_PLATFORM_WINDOWS
#include "Application.h"
extern YOTO::Application* YOTO::CreateApplication();
void main(int argc,char** argv) {auto app = YOTO::CreateApplication();app->Run();delete app;
}
#endif

YOTO.h

#pragma once#include "YOTO/Application.h"
//入口点
#include"YOTO/EntryPoint.h"

Sandbox:

SandboxApp.cpp:客户端类,只需要继承和完成CreateApplication方法

#include<YOTO.h>
class Sandbox:public YOTO::Application
{
public:Sandbox() {}~Sandbox() {}private:};YOTO::Application*YOTO::CreateApplication() {return new Sandbox();
}

在运行之前,请先生成YOTOEngine,之后将bin\Debug-x64\YOTOEngine\YOTOEngine.dll拖入bin\Debug-x64\SandBox文件夹中

测试:

在new前加入一个printf("helloworld");

运行结果:

不定期更新

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/316721.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

图像的腐蚀与膨胀

图像的腐蚀与膨胀 设集合 B B B的反射为 B ^ \hat{B} B^&#xff0c;其定义如下 B ^ { w ∣ w − b , b ∈ B } \hat{B}\begin{Bmatrix}w|w-b,b\in B\end{Bmatrix} B^{w∣w−b,b∈B​} 设集合 B B B按照点 z ( z 1 , z 2 ) z(z_1,z_2) z(z1​,z2​)平移得到集合 ( B ) z (…

IDEA2023 最新版详细图文安装教程(安装+运行测试+汉化+背景图设置)

IDEA2023 最新版详细图文安装教程 名人说&#xff1a;工欲善其事&#xff0c;必先利其器。——《论语》 作者&#xff1a;Code_流苏(CSDN) o(‐&#xff3e;▽&#xff3e;‐)o很高兴你打开了这篇博客&#xff0c;跟着教程去一步步尝试安装吧。 目录 IDEA2023 最新版详细图文安…

【AIGC摄影构图prompt】与重不同的绘制效果,解构主义+优美连拍提示效果

提取关键词构图&#xff1a; 激进解构主义 在prompt中&#xff0c;激进解构主义的画面效果可能是一种颠覆传统和权威的视觉呈现。这种画面可能以一种极端或激烈的方式表达对现有社会结构和观念体系的批判和质疑。 具体来说&#xff0c;这种画面效果可能包括&#xff1a; 破…

ssrf之gopher协议的使用和配置,以及需要注意的细节

gopher协议 目录 gopher协议 &#xff08;1&#xff09;安装一个cn &#xff08;2&#xff09;使用Gopher协议发送一个请求&#xff0c;环境为&#xff1a;nc起一个监听&#xff0c;curl发送gopher请求 &#xff08;3&#xff09;使用curl发送http请求&#xff0c;命令为 …

yolov8训练自己的数据集

1. 官网下载源码 2&#xff0c;官网下载预训练权重 并将预训练权重放在项目文件夹下。 3&#xff0c;安装所需依赖 python版本需要>3.7才可以 pip install ultralytics进入项目目录&#xff0c;打开命令台&#xff0c;pip安装ultralytics库。依赖环境只需要安装ultraly…

Maven插件开发步骤

Maven只是一套框架&#xff0c;它的功能基于全部依赖于插件来实现。因此可以通过插件开发来定制Maven。 官方文档 https://maven.apache.org/guides/plugin/guide-java-plugin-development.html 命名要求 Maven 官方的插件命名为&#xff1a;maven-<yourplugin>-plug…

基于人工智能的数据库工具Chat2DB使用

文章目录 前言Chat2DB介绍Chat2DB地址下载安装 Chat2DB配置Chat2DB使用1、自然语言转sql2. SQL解释3. SQL优化4. SQL转换 写在最后 前言 随着人工智能的发展&#xff0c;各行各业都出现了不少基于AI的工具来提升工作效率。就连国内的各个大厂也都在基于大模型开发自己的产品线…

【算法系列 | 11】深入解析查找算法之—插值查找

序言 心若有阳光&#xff0c;你便会看见这个世界有那么多美好值得期待和向往。 决定开一个算法专栏&#xff0c;希望能帮助大家很好的了解算法。主要深入解析每个算法&#xff0c;从概念到示例。 我们一起努力&#xff0c;成为更好的自己&#xff01; 今天第11讲&#xff0c;讲…

计算机毕业论文内容参考|基于区块链技术的电子健康记录系统的设计与实现

文章目录 摘要前言绪论课题背景国内外相关研究课题内容区块链技术介绍系统分析用户需求分析系统设计系统实现系统测试总结与展望摘要 本文介绍了基于区块链技术的电子健康记录系统的设计与实现。该系统旨在解决传统电子健康记录系统存在的数据安全性、数据隐私性和数据互操作性…

[⑤Meson]: Build Options构建选项

前言 在2023年末新学习了The Meson build构建系统&#xff0c;作为新一代的构建系统&#xff0c;用起来也非常的“时髦”。在构建代码项目时&#xff0c;可能会有不同编译选项或者数据变量&#xff0c;在编译前由使用者自行根据实际情况选择&#xff0c;Meson提供了一个option…

Qt第一个UI程序设计

在第一个Qt程序的基础上我对ui界面进行设计&#xff0c;点击设计按钮 然后 拖动Label按钮输入想要输入的语句。 运行结果如下图。

快速打通 Vue 3(一):基本介绍与组合式 API

很激动进入了 Vue 3 的学习&#xff0c;作为一个已经上线了三年多的框架&#xff0c;很多项目都开始使用 Vue 3 来编写了 这一组文章主要聚焦于 Vue 3 的新技术和新特性 如果想要学习基础的 Vue 语法可以看我专栏中的其他博客 Vue&#xff08;一&#xff09;&#xff1a;Vue 入…