移动开发多平台代码共享

发布时间:2026/8/28 18:59:59

移动开发多平台代码共享
做移动开发快一年了有幸接触了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/8/27 5:03:40

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

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

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

2026/8/28 8:43:23

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

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

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

2026/8/26 22:35:17

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

Java二星级练习卷:高频基础考点与工程避坑实战

Java二星级练习卷:高频基础考点与工程避坑实战

2026/8/29 6:09:55

做了这么多年Java开发,也带过不少刚入行的新人,我越来越觉得一个朴素但很有用的道理:大部分Java工程师的基础功底,并不是靠刷了几个框架就扎实的。尤其到了面试或者接手老项目的时候,暴露出来的问题往往集中在语言本身…

从OJ代码考古到知识体系构建:算法整理、重构与工程化实践

从OJ代码考古到知识体系构建:算法整理、重构与工程化实践

2026/8/29 6:09:55

简介:本资源是西南科技大学计算机专业师生整理的OJ编程题解代码合集,面向算法初学者、ACM/蓝桥杯备赛学生及数据结构与算法课程学习者,旨在提供经过AC验证的典型题目参考实现,解决自主刷题时思路卡顿、代码调试无从下手等问题。压…

AI自主性安全实践:Agent评测、权限控制与提示词注入防护

AI自主性安全实践:Agent评测、权限控制与提示词注入防护

2026/8/29 6:09:55

看到一个历史学家频繁讨论 AI,技术人的第一反应往往是:又一个外行来预测未来了。但尤瓦尔赫拉利值得例外。他在公开演讲、著作和访谈中反复强调一个判断:AI 不是普通工具,而是历史上第一个能够自主决策的技术。这句话听起来很哲学…

基于SpringBoot的污水处理关键设备智能预警与能效优化平台设计与实现(程序+文档+讲解)

基于SpringBoot的污水处理关键设备智能预警与能效优化平台设计与实现(程序+文档+讲解)

2026/8/29 6:09:55

温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台…

基于SpringBoot的研学旅行管理系统微信小程序的设计与实现(程序+文档+讲解)

基于SpringBoot的研学旅行管理系统微信小程序的设计与实现(程序+文档+讲解)

2026/8/29 6:09:55

温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台…

法学专业学生亲测:AI写作论文工具能不能用?这4个场景真香

法学专业学生亲测:AI写作论文工具能不能用?这4个场景真香

2026/8/29 5:59:55

"用AI写论文算不算学术不端?"这个问题在法学专业的课堂上已经吵了三年。2026年,答案逐渐清晰:中国政法大学、华东政法大学等多所高校陆续出台规定,允许AI辅助写作但要求声明使用范围。作为一个刚刚用AI工具辅助完成学年…

[光学原理与应用-521]:对光的错误理解与纠偏

[光学原理与应用-521]:对光的错误理解与纠偏

2026/8/27 11:10:02

首先光是一种能量的载体和形态,宏观上观察到的光是由无数个微观的光量子组成的,每个光子在产生的瞬间,其在真空的空间中以确定不变的速度沿着一个初始的方向一直向前,在微观层面,每个光量子的运动轨迹是以波函数所展现…

SIP通话转接原理与REFER方法实战解析

SIP通话转接原理与REFER方法实战解析

2026/8/27 7:25:23

1. 通话转接不是“挂断再拨号”,而是SIP会话的动态重定向你有没有遇到过这样的场景:客服坐席A正在和客户通电话,突然需要把这通对话无缝转给专家坐席B,客户完全感知不到中间的断连——既没听到忙音,也没被要求重新拨号…

Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

2026/8/28 7:34:42

1. 为什么选择Kolla-ansible来部署单节点OpenStack?如果你正在寻找一种能把OpenStack从“概念”快速变成“可用的实验环境”的方法,那么Kolla-ansible几乎是当前最主流、最省心的选择。我见过太多人卡在手动编译依赖、配置服务、处理版本冲突的泥潭里&am…

四款热门降AI工具测评:研究生和本科生怎么选?

四款热门降AI工具测评:研究生和本科生怎么选?

2026/8/29 0:09:39

马上要交论文了,最近真的被论文ai率折磨的够呛。 明明查重都没问题了,但是ai率就是居高不下,崩溃了,明明都是我自己写的,天杀的,明明都是我亲生的啊 改来改去,终于给我搞出一套完美的降ai方案…

论文降AI率免费攻略:自查、提示词与工具推荐

论文降AI率免费攻略:自查、提示词与工具推荐

2026/8/29 0:09:39

马上要交论文了,最近真的被论文ai率折磨的够呛。 明明查重都没问题了,但是ai率就是居高不下,崩溃了,明明都是我自己写的,天杀的,明明都是我亲生的啊 改来改去,终于给我搞出一套完美的降ai方案…

北京GEO优化服务商推荐:预算型企业如何选北京GEO优化服务商?

北京GEO优化服务商推荐:预算型企业如何选北京GEO优化服务商?

2026/8/29 0:09:39

前言:预算有限的企业更关心投入能否形成可持续的品牌资产。评估北京GEO优化服务商时,不能只比较单篇内容或单月报价,还要看是否能够把问题词、官网、信源和监测串成完整链路。本期重点放在预算配置、试点范围和交付边界,帮助企业先…

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

2026/8/28 7:35:26

一天写完毕业论文在2026年已不再是天方夜谭。2026年最炸裂、实测能大幅提速的AI论文写作工具,覆盖选题构思、文献整理、内容生成、格式排版等核心场景,真正帮你高效搞定论文难题。 一、全流程王者:一站式搞定论文全链路(一天定稿首…

导师推荐!2026最新AI论文工具测评与实用推荐

导师推荐!2026最新AI论文工具测评与实用推荐

2026/8/28 7:34:51

2026年真正好用的AI论文工具,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。 一、…

告别游戏崩溃:XCOM 2模组管理器的智能革命

告别游戏崩溃:XCOM 2模组管理器的智能革命

2026/8/28 7:34:35

告别游戏崩溃:XCOM 2模组管理器的智能革命 【免费下载链接】xcom2-launcher The Alternative Mod Launcher (AML) is a replacement for the default game launchers from XCOM 2 and XCOM Chimera Squad. 项目地址: https://gitcode.com/gh_mirrors/xc/xcom2-lau…