脚本开发,脚本学习,辅助软件
【腾讯云】新用户专属大礼包低至1折【阿里云】云产品通用代金券2000元【阿里云】云小站优惠返现【阿里云】企业级1折特惠【阿里云】3年低至3折
查看: 6|回复: 0

[编译x64程序] EplOnCpp Build 20190406 (Concept Preview)

[复制链接]

30

主题

30

帖子

174

积分

孩提

Rank: 2

积分
174
发表于 2020-5-16 10:38:27 | 显示全部楼层 |阅读模式

Only Chinese document is available.

EplOnCpp (EOC for short)

介绍

基于Cpp构建的Epl语言编译环境

用于支持x64程序编写及实现特殊功能

版本

版本编号:Build 20190406

版本类型:概念预览(Concept Preview)

缺乏较多库命令支持,几乎不可能用于实际工程

请勿将其使用在正式工程中,在未来的版本中,其行为可能与预览版有很大不同

开源许可证

项目
许可证

EplOnCppCoreThe MIT License
EplOnCppGUIThe MIT License
EocSystemEnvThe MIT License
EocLib_krnlnThe MIT License
EocLib_EocHelperThe MIT License

已知限制

  • 不支持窗口功能
  • 不支持“资源”
  • 不支持编写DLL
  • 不支持Linux程序编写
  • 不支持置入代码(无法解决)
  • 通用型功能相当不完善,建议避免使用(库、API声明除外,可放心使用)

用户使用指南

基本条件

  • 正确安装了.NET 4.0(或兼容版本) Windows 10自带
  • 任何支持C++ 17标准的编译器 目前仅在VS2017下进行了测试,在clang等编译器下使用时极可能遇到问题
    明确不支持VS2015/VS2012/VS2010/VC6等任何缺少C++ 17支持的编译器
  • cmake编译系统 建议在安装VS时勾选cmake支持以便快速完成安装并获得VS IDE支持

安装配置

配置EOC系统环境

  • 解压env.7z
  • 设置环境变量“EOC_HOME”为“eoc”文件夹路径
  • 重启以确保环境变量生效
  • 解压GUI.7z到任意目录

安装EocHelper库

安装EocHelper库可以使用一些EOC附加功能(通常用于跨平台)

  • 解压EocHelper.fne.build,将fne文件拷贝到e/lib目录
  • 重启易语言,勾选EocHelper库启用

使用

生成工程文件

  • 编写*.e文件
  • 在编译菜单中选择 编译为Windows模块文件
  • 在EOC主程序(GUI.7z/QIQI.EplOnCpp.GUI.exe)中输入模块文件路径
  • 在EOC主程序中选择正确的工程类型
  • 输入输出目录路径
  • 点击按钮生成

编译

生成目录中将包含完整的cmake工程信息,请您使用cmake命令行自行编译

新版本的VS也包含了良好的cmake支持(需要安装),您可以在配置成功后,通过“在VS中打开文件夹”来浏览工程

XP支持

EOC不对XP系统提供主流支持,且任何对XP的有限支持都可能在未来的版本中移除

但由于VS2017仍然保留有限XP支持,您可以在cmake中使用参数-T v141_xp编译

为了更好的兼容性,您可以还需要使用VC-LTL等项目

库编写指南

请参照核心库的编写,正确编写C++代码、cmake配置文件config.cmake和库信息文件info.json

规范

命名

所有库命令应该放在命名空间e::lib::{LibName}下,其中{LibName}为库的英文名

自定义类型

所有自定义结构应该为智能指针类型e::system::struct_ptr<Raw>的别名,其中Raw为原始类型

所有自定义类应该为智能指针类型e::system:bject_ptr<Raw>的别名,其中Raw为原始类型,应继承自e::system::basic_object并正确实现clone函数

info.json

库信息文件 CMakeName描述库在CMake配置文件中的名称,应与config.cmake中信息相匹配

Cmd/Type/Constant/Enum描述库提供的命令/类型/常量/枚举,其类型为Object【Key为中文名,Value为具体信息】

config.cmake

cmake配置文件

其应当正确配置库项目并定义{CMakeName}_FOUND/{CMakeName}_INCLUDE_DIRS/{CMakeName}_LIBRARIES,其中{CMakeName}应与info.json中信息相匹配

SuperTemplate

用于实现某些特殊支持库,接口极不稳定,如非必要请避免使用

类型

中文名
类型名

算术类型-
字节型uint8_t
短整数型int16_t
整数型int32_t
长整数型int64_t
小数型float
双精度小数型double
平台整数intptr_t
非算术基本类型-
文本型e::system::string
字节集e::system::bin
日期时间型e::system::datetime
子程序指针e::system::methodptr
通用型e::system::any
高级类型-
数组(单维或多维)e::system::array<*>
自定义类型{CppName}

注意事项

  • 对于末尾的可空参数,其在C++层面应当包含默认值(通常为std::nullopt)
  • 对于通用型参数,在库层面建议结合模板以便加快效率(此时在info.json中将类型声明为*而非e::system::any)
  • 任何类型声明为*的函数应当能够接受e::system::any,以便在和 通用型变量 和 其他命令的通用型返回值 组合使用时,能够正确工作:如到文本 (取字节集数据 ({ 1, 2, 3, 4, 5, 6, 7, 8 }, #长整数型, ))
  • 参数的ByRef选项,仅用于非常量引用,对常量引用(const&)应为false以便获取更高的运行速度

下载链接:https://t00y.com/file/20110282-443640710






上一篇:UI界面
下一篇:文件归类小程序
3Q4T网,编程学习交流基地。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表