社区
工具平台和程序库
帖子详情
要写一个在mac os ,ios ,android下通用库,需要注意哪些?
未日机甲
2011-08-24 06:01:55
现在因为工作需要,要写一个p2p文件下载模块,p2p系统是我们自己实现的,协议都是自己的。所以怎么实现没有问题的。
主要问题是,要实现这些平台下通用。可能会出现一些问题,有没有有经验的朋友,先给个提醒以免多走弯路?
...全文
672
28
打赏
收藏
要写一个在mac os ,ios ,android下通用库,需要注意哪些?
现在因为工作需要,要写一个p2p文件下载模块,p2p系统是我们自己实现的,协议都是自己的。所以怎么实现没有问题的。 主要问题是,要实现这些平台下通用。可能会出现一些问题,有没有有经验的朋友,先给个提醒以免多走弯路?
复制链接
扫一扫
分享
举报
写回复
配置赞助广告
用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)
Mac
OS
下编译OpenCV for
i
OS
,
android
,
mac
os
Mac
OS
下编译opencv for
mac
os
方法 编译源码方法:1、下载cmake,安装。2、cmake -G "Unix Makefiles"3、make4、make install 附:如果你
mac
已经安装了ffmpeg,编译的时候又因为ffmpeg出现了问题,解决 办法可以找到cvconfig.h,把HAVE_FFMPEG 相关的define 注释掉。
MAC
OS
下
执行
i
os
命令_RN在
mac
os
上面的项目创建以及
Android
/
I
OS
模拟运行
最近捯饬了RN。第一步,创建项目react-native init demo第二步,如果遇到Installing required CocoaPods dependencies卡顿,停下当面执行命令进入demo目录执行pod install --verb
os
e --no-repo-update第三步,执行
i
os
模拟器运行效果yarn react-native run-
i
os
第四步,苹果...
i
OS
、
Android
连接Charles代理(
Mac
版)
i
OS
、
Android
连接Charles代理(
Mac
版) 1、软件Charles的下载 网址:https://www.charlesproxy.com/ 选择下载
Mac
OS
版本就行了,待安装完成后 将下载好的文件拖拽至应用程序中 2、配置 电脑端: Proxy ——> Proxy Settings Port:8888 勾选:Enable transparent proxying 如果要抓取电脑上的网页,记得打开 Proxy ——>
mac
Os
Proxy 手机端: 1、设置(Setting
解决微信小程序
i
os
用户获取
mac
地址问题,uuid转
mac
地址
在开发小程序蓝牙功能时,发现
Android
和
i
OS
平台获取的deviceId不同:
Android
为设备的
MAC
地址,而
i
OS
为设备的UUID。为解决这一问题,通过uni.getBluetoothDevices获取设备信息,并解析serviceData中的
MAC
地址。serviceData为ArrayBuffer类型,需通过Uint8Array进行解析。具体步骤包括:检查设备名称、提取serviceData、将其转换为Uint8Array,并根据字节长度解析
MAC
地址。最终,通过将字节数组转换为16进制字符串
MAC
编译ffmpeg+x264+mp3lame(
I
OS
和
android
)(一)
前言 FFmpeg是
一个
很强大的垮平台的音视频处理
库
,它可用于
Mac
/windows/
i
os
/
android
/linux等各个平台,FFmpeg
库
自身native代码实现了很多功能,也引入了其它的很多外部
库
,比如x264、fdk_aac、lamemp3等等,然后对这些外部
库
做封装,对外则提供了统一的接口。如下提供了尽量简单的方法编译用于这些平台的ffmpeg
库
(引入常用的x264、fdk_aac、lamemp3外部
库
)。 编译基础知识 编译一般分为本地编译和交叉编译,本地编译是相对于交叉编译而言的。本
工具平台和程序库
24,850
社区成员
27,330
社区内容
发帖
与我相关
我的任务
工具平台和程序库
C/C++ 工具平台和程序库
复制链接
扫一扫
分享
社区描述
C/C++ 工具平台和程序库
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章