移动开发多平台代码共享

发布时间:2026/7/12 6:26:02

移动开发多平台代码共享
做移动开发快一年了有幸接触了WM、Symbian、Android、iPhone等多个平台的开发。往往一个软件需要实现多个平台的版本对于不同平台进行重新编码是一件很费劲的事情其实我们可以通过代码共用技术实现对一些代码的重用。这一技术的应用可以带来不少的好处1.代码重用节约开发和维护的时间2.核心代码的保护将核心代码编译成库只将库而不是源代码提供给上层开发人员使用。3.。。。。。。本文将实现一个支持这几个平台的天气信息查询软件软件采用C语言去实现调用WebService接口获取天气信息的功能并将其编译成各种平台能够调用的库而UI则采用各个平台各自的语言去实现最终实现底层代码的共用。先来看看最终的效果图:一、底层代码的实现我们要调用到WebService接口需要使用网络而对于不同的平台socket的使用上有细微差异我通过条件编译的方式实现对不同平台的兼容。下面是实现代码://对于VC的DLL,需要导出函数,而其他的则不需要头文件Common.h#ifdef _MSC_VER#define DLLFLAG _declspec(dllexport)#else#define DLLFLAG #endif//通过WebService接口获取天气信息DLLFLAG char* getWeather(const char *cityName);源文件Common.c#include string.h#include Common.h#include stdlib.h//根据系统加载不同的网络库#ifdef _MSC_VER#include winsock2.h#pragma comment(lib, winsock.lib)#else#include sys/socket.h#include netinet/in.h#include arpa/inet.h#include netdb.h#endif#define BUFSIZ 4096DLLFLAG char* getWeather(const char *pCityName){//对于VC需要初始化socket版本#ifdef _MSC_VERWSADATA wsaData;int iResult WSAStartup( MAKEWORD(2,2), wsaData );#endifint sockfd 0;struct sockaddr_in addr;char text[BUFSIZ] ;char header[BUFSIZ] ;char *content (char*)malloc(BUFSIZ);sockfd socket(AF_INET, SOCK_STREAM, 0);addr.sin_family AF_INET;//不同平台填充地址字段的方式不同#ifdef _MSC_VERaddr.sin_addr.S_un.S_addr inet_addr(222.73.218.218);#elseinet_aton(222.73.218.218,addr.sin_addr);#endifaddr.sin_port htons(80);memset(header, 0, sizeof(header));strcat(header, GET /Service.asmx/getWeatherbyCityName?theCityName);strcat(header, pCityName);strcat(header, theDayFlagToday HTTP/1.1rn);strcat(header, Host: www.ayandy.comrnrn);connect(sockfd,(struct sockaddr *)addr,sizeof(struct sockaddr_in));send(sockfd, header, strlen(header), 0);memset(text, 0, BUFSIZ);memset(content, 0, BUFSIZ);recv(sockfd, text, BUFSIZ, 0);strcat(content, text);//while ( recv(sockfd, text, BUFSIZ, 0) 0)//{// strcat(content, text);// memset(text, 0, BUFSIZ);//}//不同平台关闭socket的方法不同#ifdef _MSC_VERclosesocket(sockfd);WSACleanup();#elseshutdown(sockfd, SHUT_RDWR);#endifreturn content;}二、Windows Mobile 平台对于WM平台为了与底层库相区别我们就不用VC去实现UI而使用C#来实现UI。1.编译dllVisual C – 智能设备 – 由于没有好的dll模板我们就建一个“MFC智能设备DLL”取名ShareLib然后在生成的项目中删除掉没用的文件比如预编译啥的添加我们的底层代码文件Common.h和 Common.c最终文件结构如图然后编译最终会生成ShareLib.dll文件2.实现主界面新建一个C#的智能设备项目取名ShareLibTest在Form1.cs文件中添加对于dll的引用[DllImport(ShareLib.dll,CharSetCharSet.Unicode) ]publicstaticexternIntPtr getWeather(stringcityName);然后进行界面的设计最终界面如图然后给按钮设置点击事件

相关新闻

内存 RDIMM 带寄存器 速度更快 性能更好啊

内存 RDIMM 带寄存器 速度更快 性能更好啊

2026/7/12 12:15:21

在低负载或单条内存的场景下,RDIMM 的延迟确实更低,理论上“速度更快”。但对服务器这种高负载、多内存插槽的环境来说,这个“快”并不是性能的全部,甚至可以说实际体验中LRDIMM并不比RDIMM慢。两者的差异可以这样理解&#xff1a…

出口制造企业流水线配件采购合规与成本如何同步优化?2026 实操指南

出口制造企业流水线配件采购合规与成本如何同步优化?2026 实操指南

2026/7/11 15:06:06

大家好,我是阿九。今天这篇文章,写给所有被产线零散配件采购折磨过的朋友——无论是被非标螺丝卡住进度的设备工程师,还是疲于应付十多家供应商的采购主管。我们将直面出口制造企业流水线配件采购中一个最真实的痛点:当“小批量、…

2026国内企业AI培训服务商TOP3深度评测:从智能体架构到业务落地的技术选型指南

2026国内企业AI培训服务商TOP3深度评测:从智能体架构到业务落地的技术选型指南

2026/7/11 18:10:36

引言:AI人才缺口背后的技术落地困境根据《人工智能产业人才发展报告(2025~2026)》数据显示,当前中国AI人才缺口已超580万人,超70%的企业将"团队AI能力不足"列为智能化转型的首要阻碍。这个数据背后,是一个被…

selenium-stealth高级技巧:提升reCAPTCHA v3评分的5个实用方法

selenium-stealth高级技巧:提升reCAPTCHA v3评分的5个实用方法

2026/7/12 20:25:15

selenium-stealth高级技巧:提升reCAPTCHA v3评分的5个实用方法 【免费下载链接】selenium-stealth Trying to make python selenium more stealthy. 项目地址: https://gitcode.com/gh_mirrors/se/selenium-stealth 在当今网络环境中,reCAPTCHA v…

Creative View Pager vs 传统ViewPager:为什么选择这个创意分页器?

Creative View Pager vs 传统ViewPager:为什么选择这个创意分页器?

2026/7/12 20:25:15

Creative View Pager vs 传统ViewPager:为什么选择这个创意分页器? 【免费下载链接】creative-viewpager Creative View Pager easy to use in Android 项目地址: https://gitcode.com/gh_mirrors/cr/creative-viewpager Creative View Pager是一…

ManwaDownloader — 漫蛙漫画批量下载器

ManwaDownloader — 漫蛙漫画批量下载器

2026/7/12 20:25:15

一个轻量、高速、开箱即用的漫画下载工具,支持 [漫蛙漫画](漫蛙走失页) 全站漫画一键批量下载。 | 🚀 **极速下载** | 多线程并发 流式写入,实测 5 张/秒 | | 🔄 **智能续传** | 自动跳过已下载章节,断网/关机后接续下…

【健康菜谱助手】HarmonyOS ArkTS 实战:AppGallery 发布流程与 versionName 1.0.4 验证

【健康菜谱助手】HarmonyOS ArkTS 实战:AppGallery 发布流程与 versionName 1.0.4 验证

2026/7/12 20:25:15

应用能在 DevEco Studio 里跑起来,不代表它能顺利上架。发布阶段会检查版本、签名、包体、图标、截图、隐私、权限、设备适配和核心流程稳定性。健康菜谱助手在上架更新时,也必须把这些内容逐项对齐。这篇文章按发布流水线来写,不讨论页面怎么…

【HarmonyOS 项目实战】ArkTS 实战:每日一题与错题本的本地学习闭环

【HarmonyOS 项目实战】ArkTS 实战:每日一题与错题本的本地学习闭环

2026/7/12 20:25:15

系列HarmonyOS 化学实验室 CSDN 技术实战专栏篇目第六篇标题第六篇:每日一题与错题本:HarmonyOS 本地学习闭环的实现方式摘要:这篇从学习效果出发,讲每日一题和错题本如何配合,让一次答错变成下一次复习入口。本篇关注…

2026全球EMBA理性测评 科学选型指南

2026全球EMBA理性测评 科学选型指南

2026/7/12 20:15:15

当前全球 EMBA 市场项目繁多,学费跨度大、认证资质不一、适配场景差异明显,很多企业高管和创始人在选型时,常陷入“重排名轻适配”“重宣传轻实效”的误区,难以找到贴合自身需求的项目。本文结合行业公开数据与权威报告&#xff0…

Unity游戏文本翻译架构深度解析:XUnity.AutoTranslator的技术实现与工程实践

Unity游戏文本翻译架构深度解析:XUnity.AutoTranslator的技术实现与工程实践

2026/7/12 0:03:42

Unity游戏文本翻译架构深度解析:XUnity.AutoTranslator的技术实现与工程实践 【免费下载链接】XUnity.AutoTranslator 项目地址: https://gitcode.com/gh_mirrors/xu/XUnity.AutoTranslator XUnity.AutoTranslator作为Unity游戏社区中最成熟的文本翻译解决方…

openEuler Raspberry Pi Kernel设备驱动开发指南:为树莓派硬件添加支持

openEuler Raspberry Pi Kernel设备驱动开发指南:为树莓派硬件添加支持

2026/7/12 0:03:42

openEuler Raspberry Pi Kernel设备驱动开发指南:为树莓派硬件添加支持 【免费下载链接】raspberrypi-kernel It provides openEuler kernel source for Raspberry Pi 项目地址: https://gitcode.com/openeuler/raspberrypi-kernel 前往项目官网免费下载&…

openEuler系统集成测试实战:基于smoke-test套件的环境验证技巧

openEuler系统集成测试实战:基于smoke-test套件的环境验证技巧

2026/7/12 0:03:42

openEuler系统集成测试实战:基于smoke-test套件的环境验证技巧 【免费下载链接】integration-test The repo contains test suits for system integration test 项目地址: https://gitcode.com/openeuler/integration-test 前往项目官网免费下载:…

Unity游戏文本翻译架构深度解析:XUnity.AutoTranslator的技术实现与工程实践

Unity游戏文本翻译架构深度解析:XUnity.AutoTranslator的技术实现与工程实践

2026/7/12 0:03:42

Unity游戏文本翻译架构深度解析:XUnity.AutoTranslator的技术实现与工程实践 【免费下载链接】XUnity.AutoTranslator 项目地址: https://gitcode.com/gh_mirrors/xu/XUnity.AutoTranslator XUnity.AutoTranslator作为Unity游戏社区中最成熟的文本翻译解决方…

openEuler Raspberry Pi Kernel设备驱动开发指南:为树莓派硬件添加支持

openEuler Raspberry Pi Kernel设备驱动开发指南:为树莓派硬件添加支持

2026/7/12 0:03:42

openEuler Raspberry Pi Kernel设备驱动开发指南:为树莓派硬件添加支持 【免费下载链接】raspberrypi-kernel It provides openEuler kernel source for Raspberry Pi 项目地址: https://gitcode.com/openeuler/raspberrypi-kernel 前往项目官网免费下载&…

openEuler系统集成测试实战:基于smoke-test套件的环境验证技巧

openEuler系统集成测试实战:基于smoke-test套件的环境验证技巧

2026/7/12 0:03:42

openEuler系统集成测试实战:基于smoke-test套件的环境验证技巧 【免费下载链接】integration-test The repo contains test suits for system integration test 项目地址: https://gitcode.com/openeuler/integration-test 前往项目官网免费下载:…