易语言手册

易语言手册


2024年4月18日发(作者:)

易语言手册

版本:1.0

作者:明

日期:2010年元月

综述

易语言静态编译技术手册,主要介绍易语言静态编译方案,以及

支持库改造方法。

易语言5.0“基于第三方链接器的”静态编译方案的核心是:把易

语言编译器生成的中间数据,编译成COFF格式的obj文件,然后把

它交给第三方链接器,与各支持库的静态库(*.lib文件)一起链接生

成EXE/DLL。

为了配合静态编译,易语言编译器、核心支持库、集成开发环境

(IDE)均已做出重大更新,绝大多数官方支持库已完成自身改造。

第三方支持库需要作者按照本文介绍的方法完成支持库改造,以

便支持静态编译。未经静态编译改造的原有支持库,仍可在新版易语

言中使用,只是不能支持静态编译。

支持库静态编译改造

目的:使该支持库可以支持静态编译

途径:1、在原支持库(.fne)基础上额外输出部分信息;2、提供支

持库的静态库,并按要求导出特定的函数符号

为了支持静态编译,对支持库框架做了扩展性修改,这种修改不

会对现有的支持库造成任何负面影响。即:如果不需要支持静态编译,

现有的支持库不需要做任何修改;如果已经做了修改,也不影响原有

功能和使用方式。最大程度的保持支持库的向前向后兼容性。

今后支持库要分为两个版本:一个动态库版(即现有的fne/fnr

等),一个静态库版。

动态库版支持库,除了提供向后兼容的运行时支持外,还要在静

态编译连接期间提供数据支持。

静态库版支持库,用于静态编译连接,编译连接期间需要动态库

版支持库的支持,但编译连接后生成的EXE/DLL不依赖任何非系统库。

动态库版和静态库版,基本上还是使用同一套源代码,只是在必

要的地方用C/C++预定义宏(__E_STATIC_LIB)区分。

以下说明中将明确区分静态库和动态库。

为支持静态编译,易语言支持库开发包接口文件 lib2.h 中增加了

以下通知项(系统发送给支持库的通知, PFN_NOTIFY_LIB):

#define NL_GET_CMD_FUNC_NAMES 14

// 返回所有命令实现函数的的函数名称数组(char*[]), 支持静态编

译的动态库必须处理

#define NL_GET_NOTIFY_LIB_FUNC_NAME 15

// 返回处理系统通知的函数名称(PFN_NOTIFY_LIB函数名称), 支

持静态编译的动态库必须处理

#define NL_GET_DEPENDENT_LIBS 16

// 返回静态库所依赖的其它静态库文件名列表(格式为0分隔的文

本,结尾两个0), 支持静态编译的动态库必须处理


发布者:admin,转转请注明出处:http://www.yc00.com/web/1713447915a2250889.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信