朱金灿
我们知道任何操作系统之上的应用程序的功能实现都依赖于操作系统API。基于这个认识,我们大概可以得到这样一个认识:任何的跨平台代码不过是对不同平台的操作系统的API的一层封装。现在以跨平台库gtk+的动态加载dll的函数g_module_open为例,我们可以设想一下它是如何实现以做到跨平台的。我们知道Windows平台下动态加载dll的函数是LoadLibrary, 而Linux平台动态加载共享库(在linux平台下习惯将动态链接库称为共享库)为dlopen。那么我们可以设想g_module_open大概可以这样实现:<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
GModule * g_module_open(char* pszFileName,int Flag )
{
#if defined _WINDOWS
return LoadLibrary(pszFileName);
#else
#if defined _LINUX // 这里假设_LINUX为LINUX平台的标识宏
return dlopen(pszFileName, Flag);
#endif
#endif
}
这里我们设想编写跨平台代码的关键在于在不同平台中找到实现相同功能的接口,然后在上面封装一层外壳供使用者调用。为什么我们说使用标准C能够实现跨平台?究其原因在于标准C是一个业界标准,在符合该标准不同的操作系统都已实现,相当于我之前提到的那层外壳。当然编写跨平台代码是有很多地方需要注意的,比如字节顺序(大端法机器还是小端法机器),字节对齐和填充等等,远不像我所说的那么简单。
分享到:
相关推荐
大墙内外的断想.docx
《地下森林断想》.ppt
地下森林断想教学设计.pdf
初中语文文摘人生点水断想
大学应用写作课程改革断想.pdf
地下森林断想练习题精选.doc
初中语文文学讨论美文荐读断想篇
地下森林断想练习题及答案精选.doc
地下森林断想练习题及答案解析精选.doc
初中语文文学讨论现当代文学陶渊明祠堂的断想
大数据背景下数字图书出版的私人定制断想.docx
数据、互联、智能——未来信息时代断想.pdf
2021最新公司企业文化建设企业文化建设断想.doc
人教初中语文《地下森林断想》PPT课件 (1).ppt
人文社科-大成律师事务所核心文化建设断想.docx
《地下森林断想》练习题含答案.doc.pdf
甘肃省张掖市第二中学高中语文优秀作文断想素材
初中九年级语文《地下森林断想》优选教案设计.pdf