要写一个在mac os ,ios ,android下通用库,需要注意哪些?

未日机甲 2011-08-24 06:01:55
现在因为工作需要,要写一个p2p文件下载模块,p2p系统是我们自己实现的,协议都是自己的。所以怎么实现没有问题的。
主要问题是,要实现这些平台下通用。可能会出现一些问题,有没有有经验的朋友,先给个提醒以免多走弯路?
...全文
586 28 打赏 收藏 转发到动态 举报
写回复
用AI写文章
28 条回复
切换为时间正序
请发表友善的回复…
发表回复
未日机甲 2011-08-25
  • 打赏
  • 举报
回复
[Quote=引用 24 楼 xunxun1982 的回复:]

我刚把posix线程模型的mingw gcc移植成功
[/Quote]
恭喜移植成功~~ 继续努力~
jackyjkchen 2011-08-25
  • 打赏
  • 举报
回复
[Quote=引用 25 楼 bringmeback 的回复:]

引用 23 楼 luciferisnotsatan 的回复:

还有,注意下不同设备的字节序是否一样。

恩恩,谢谢提醒了,我继续设计去,近期开始开发
-
[/Quote]
其实这几家一般都是ARM,ppc和x86的andriod貌似也有,x86字节序和arm一样,ppc不一样,但基本没见过
未日机甲 2011-08-25
  • 打赏
  • 举报
回复
[Quote=引用 22 楼 jackyjkchen 的回复:]

跨平台不是万能的

Linux的平台移植性好在源码使用gcc风格C语言和AT&T风格汇编,而又严格要求gcc编译(ICC在Intel平台也可,只跨x86、x64、ia64)

对于那些各自为政的系统,后台大公司的商业能量往往会推动系统网封闭的方向发展,Mac OS其实何以做到和FreeBSD兼容,但现在看他和FreeBSD差别越来越大

Windows也有posix兼容层,p……
[/Quote]

嗯,其实也不是全部要跨平台的,只是公司在这几个平台的产品都要有这个功能。根据需求来的,只能这么做的
未日机甲 2011-08-25
  • 打赏
  • 举报
回复
[Quote=引用 23 楼 luciferisnotsatan 的回复:]

还有,注意下不同设备的字节序是否一样。
[/Quote]
恩恩,谢谢提醒了,我继续设计去,近期开始开发
-
xunxun 2011-08-25
  • 打赏
  • 举报
回复
我刚把posix线程模型的mingw gcc移植成功
luciferisnotsatan 2011-08-25
  • 打赏
  • 举报
回复
还有,注意下不同设备的字节序是否一样。
jackyjkchen 2011-08-25
  • 打赏
  • 举报
回复
跨平台不是万能的

Linux的平台移植性好在源码使用gcc风格C语言和AT&T风格汇编,而又严格要求gcc编译(ICC在Intel平台也可,只跨x86、x64、ia64)

对于那些各自为政的系统,后台大公司的商业能量往往会推动系统网封闭的方向发展,Mac OS其实何以做到和FreeBSD兼容,但现在看他和FreeBSD差别越来越大

Windows也有posix兼容层,posix也是可以在用户层完整实现的,不一定非得操作系统内核,但M$有意弱化posix子系统
未日机甲 2011-08-25
  • 打赏
  • 举报
回复
[Quote=引用 19 楼 luciferisnotsatan 的回复:]

我主要说的是windows和linux上的差异。

现在手机上的库应该还是很全的。
我见过最狠的一个设备,把wchar的那组函数都给阉割了。
[/Quote]

嗯,是的不过ios和android,都算是很成熟的平台了,应该不是什么太大的问题的
未日机甲 2011-08-25
  • 打赏
  • 举报
回复
[Quote=引用 18 楼 jackyjkchen 的回复:]

引用 16 楼 bringmeback 的回复:

[Quote=引用 14 楼 jackyjkchen 的回复:]

引用 13 楼 bringmeback 的回复:

引用 11 楼 jackyjkchen 的回复:

引用 7 楼 bringmeback 的回复:

谢谢大家的回复啊,我开始试着做吧,有问题再说

有些嵌入式设备连标准库STL都阉割,别说其他C++库……
[/Quote]
你的怀疑很有道理,不过不完全支持C++的特性也没有关系的吧?只要保证我的应用能运行跑就好了。反正我的程序也用不了那么多特性的。一些少的功能可能我都用不到。就用到的功能少了,也总能找到替代的方法。
不追求我写好的代码能一点不改的在各个平台上运行。只要能在一定时间内,经过各种努力达到这个目的就行了。

再我又不是第一个写这种库的人,你去查一下cocos2d一个C++的库,这个游戏开发库就同时支持ios和android还支持普通的pc。
luciferisnotsatan 2011-08-25
  • 打赏
  • 举报
回复
我主要说的是windows和linux上的差异。

现在手机上的库应该还是很全的。
我见过最狠的一个设备,把wchar的那组函数都给阉割了。
jackyjkchen 2011-08-25
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 bringmeback 的回复:]

[Quote=引用 14 楼 jackyjkchen 的回复:]

引用 13 楼 bringmeback 的回复:

引用 11 楼 jackyjkchen 的回复:

引用 7 楼 bringmeback 的回复:

谢谢大家的回复啊,我开始试着做吧,有问题再说

有些嵌入式设备连标准库STL都阉割,别说其他C++库了


ios和android和普通和普通的嵌入式……
[/Quote]

一个类比,如果连“标准库”STL支持都有问题,其它的C++库可想而之,所以嵌入式设备上,C++跨平台能力显然不如C

symbian的STL就不太好,Symbian和Windows Mobile的标准C库函数都不全,没在IPHONE上做过开发,但IPHONE主要开发环境是objc,C++的支持到底怎么样我不太乐观(也许我不对),类似的Andriod的sdk是java,对于C和C++,你能保证他移植的是完整未裁剪的gcc、glibc和stdc++么
未日机甲 2011-08-25
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 luciferisnotsatan 的回复:]

引用 12 楼 bringmeback 的回复:

引用 10 楼 luciferisnotsatan 的回复:

你们库提供的api可以通用,但你们写库时,肯定会写各平台相关的代码。
如果想自己库代码就一份通用,基本没可能


平台相关都是些界面和设置相关的吧?如果只用文件+线程+基本socket操作,应该能保证通用的。

c/c++没有socket概念,windows的s……
[/Quote]
posix有这些概念好不??我不是没有写过网络程序的。用bsd的那些最基本的socket操作各个平台都一样的。
再说这些都是小问题,几个宏就能搞定的
未日机甲 2011-08-25
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 jackyjkchen 的回复:]

引用 13 楼 bringmeback 的回复:

引用 11 楼 jackyjkchen 的回复:

引用 7 楼 bringmeback 的回复:

谢谢大家的回复啊,我开始试着做吧,有问题再说

有些嵌入式设备连标准库STL都阉割,别说其他C++库了


ios和android和普通和普通的嵌入式环境不同的吧?ios的内核是mac os继承来的,mac os又是继承于……
[/Quot
我说的库又不是只有stl 很多库就只用了c++语法和一些系统的api,只要支持c++和posix那些库就能工作的,你说的是什么嵌入式环境啊?? ios和android的手机哪个没有上百M的内存??比XP出现的时候的PC硬件性能都高了。
luciferisnotsatan 2011-08-25
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 bringmeback 的回复:]

引用 10 楼 luciferisnotsatan 的回复:

你们库提供的api可以通用,但你们写库时,肯定会写各平台相关的代码。
如果想自己库代码就一份通用,基本没可能


平台相关都是些界面和设置相关的吧?如果只用文件+线程+基本socket操作,应该能保证通用的。
[/Quote]
c/c++没有socket概念,windows的socket和linux的有些不同,不过你这没用到。
c/c++也没有线程概念,线程是靠系统提供的。
jackyjkchen 2011-08-25
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 bringmeback 的回复:]

引用 11 楼 jackyjkchen 的回复:

引用 7 楼 bringmeback 的回复:

谢谢大家的回复啊,我开始试着做吧,有问题再说

有些嵌入式设备连标准库STL都阉割,别说其他C++库了


ios和android和普通和普通的嵌入式环境不同的吧?ios的内核是mac os继承来的,mac os又是继承于freeBSD .android的内核是linux,内核……
[/Quote]
怎么扯了这么多操作系统继承关系,这与STL无关,与C++也无关

STL和posix标准又没关系,C++里面也没有posix函数,Windows不遵循posix,VC的stl照样是完整的

某些嵌入式设备,Linux系统,但因为存储和性能问题不提供完整的STL,甚至连标准C库都不一定完整
未日机甲 2011-08-25
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 jackyjkchen 的回复:]

引用 7 楼 bringmeback 的回复:

谢谢大家的回复啊,我开始试着做吧,有问题再说

有些嵌入式设备连标准库STL都阉割,别说其他C++库了
[/Quote]

ios和android和普通和普通的嵌入式环境不同的吧?ios的内核是mac os继承来的,mac os又是继承于freeBSD .android的内核是linux,内核都是支持posix标准的。如果库只用到标准C++,只要加入工程编译都没有太大的问题吧?
未日机甲 2011-08-25
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 luciferisnotsatan 的回复:]

你们库提供的api可以通用,但你们写库时,肯定会写各平台相关的代码。
如果想自己库代码就一份通用,基本没可能
[/Quote]

平台相关都是些界面和设置相关的吧?如果只用文件+线程+基本socket操作,应该能保证通用的。
jackyjkchen 2011-08-25
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 bringmeback 的回复:]

谢谢大家的回复啊,我开始试着做吧,有问题再说
[/Quote]
有些嵌入式设备连标准库STL都阉割,别说其他C++库了
luciferisnotsatan 2011-08-25
  • 打赏
  • 举报
回复
你们库提供的api可以通用,但你们写库时,肯定会写各平台相关的代码。
如果想自己库代码就一份通用,基本没可能
未日机甲 2011-08-25
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 babilife 的回复:]

这些玩意都能用C吗?能的话就用标准C
[/Quote]
全部用C,开发效率会低很多。C++有很多很好用的库的。还好这些系统都支持C++的
加载更多回复(8)

24,854

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 工具平台和程序库
社区管理员
  • 工具平台和程序库社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧