社区
工具平台和程序库
帖子详情
要写一个在mac os ,ios ,android下通用库,需要注意哪些?
未日机甲
2011-08-24 06:01:55
现在因为工作需要,要写一个p2p文件下载模块,p2p系统是我们自己实现的,协议都是自己的。所以怎么实现没有问题的。
主要问题是,要实现这些平台下通用。可能会出现一些问题,有没有有经验的朋友,先给个提醒以免多走弯路?
...全文
596
28
打赏
收藏
要写一个在mac os ,ios ,android下通用库,需要注意哪些?
现在因为工作需要,要写一个p2p文件下载模块,p2p系统是我们自己实现的,协议都是自己的。所以怎么实现没有问题的。 主要问题是,要实现这些平台下通用。可能会出现一些问题,有没有有经验的朋友,先给个提醒以免多走弯路?
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用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)
opencv3.4.5
i
os
android
windows c++ exe
OpenCV是
一个
基于Apache2.0许可(开源)发行的跨平台计算机视觉和机器学习软件
库
,可以运行在Linux、Windows、
Android
和
Mac
OS
操作系统上。 [1] 它轻量级而且高效——由一系列 C 函数和少量 C++ 类构成,同时提供了Python、Ruby、MATLAB等语言的接口,实现了图像处理和计算机视觉方面的很多
通用
算法。 OpenCV用C++语言编
写
,它具有C ++,Python,Java和MATLAB接口,并支持Windows,Linux,
Android
和
Mac
OS
,OpenCV主要倾向于实时视觉应用,并在可用时利用MMX和SSE指令, 如今也提供对于C#、Ch、Ruby,GO的支持。
计算机视觉+机器学习+OpenCV
OpenCV是
一个
基于Apache2.0许可(开源)发行的跨平台计算机视觉和机器学习软件
库
,可以运行在Linux、Windows、
Android
和
Mac
OS
操作系统上。 [1] 它轻量级而且高效——由一系列 C 函数和少量 C++ 类构成,同时提供了Python、Ruby、MATLAB等语言的接口,实现了图像处理和计算机视觉方面的很多
通用
算法。 该开发包合集,是笔者花了2天时间,从OpenCV官网陆陆续续下载下来最新稳定版本,内容包括: Windows和Linux平台源代码: opencv-4.6.0.zip opencv-4.6.0.tar.gz Windows、
Android
、
I
OS
平台的SDK安装包: opencv-4.6.0-vc14_vc15.exe opencv-4.6.0-
android
-sdk.zip opencv-4.6.0-
i
os
-framework.zip
h.264
通用
播放器
h.264
通用
播放器,全能播放,不再为H.264格式文件播放而烦恼!!!!
Devart UniDAC v7.4.12 Professional D7-D10.3Rio Full Source
Universal Data Access Components (UniDAC)是一款
通用
数据
库
访问组件,提供了多个数据
库
的直接访问,如针对Windows的Delphi, C++Builder, Lazarus (以及 Free Pascal) ,
Mac
OS
X,
i
OS
,
Android
, Linux和64和32位的FreeBSD等等。
Unidac_Pro_7.1.4_For_Tokyo
Universal Data Access Components (UniDAC)是一款
通用
数据
库
访问组件,提供了多个数据
库
的直接访问,如针对Windows的Delphi, C++Builder, Lazarus (以及 Free Pascal) ,
Mac
OS
X,
i
OS
,
Android
, Linux和64和32位的FreeBSD等等。
工具平台和程序库
24,857
社区成员
27,330
社区内容
发帖
与我相关
我的任务
工具平台和程序库
C/C++ 工具平台和程序库
复制链接
扫一扫
分享
社区描述
C/C++ 工具平台和程序库
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章