C++代码移植问题

ArdourCareful 2012-05-10 04:41:21
C++中怎么确定哪些函数是不能跨操作系统使用的?MFC中的类及成员函数能在Linux下使用吗?
...全文
224 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
酱油党 2012-05-14
  • 打赏
  • 举报
回复
[Quote=引用 19 楼 的回复:]

问了一下开发人:因为在unix下封装了一套适用这个环境的MFC类库,可以跑在不同unix环境下。
哪如何知道某函数是否具有移植性呢?
[/Quote]一般你可以重载一个对应你要移植环境的版本,根据宏进行封装(会很混乱),或者直接开个工程(减小混乱
酱油党 2012-05-14
  • 打赏
  • 举报
回复
[Quote=引用 19 楼 的回复:]

问了一下开发人:因为在unix下封装了一套适用这个环境的MFC类库,可以跑在不同unix环境下。
哪如何知道某函数是否具有移植性呢?
[/Quote]看具体使用的API是否在对应的环境有支持
清竹小雨 2012-05-11
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 的回复:]

楼主上班了还没搞明白这个关系...有点可悲了.

一般开源代码都是跨平台的, 所谓跨平台即源代码级别跨平台, 通过宏选择性的使用平台相关的API.

C/CPP库本身就是跨平台的,其接口隐藏了操作系统相关API.

如果你希望编写一个像APACHE一样跨平台的软件,就要在编码时提前考虑好哪些是平台无关接口,哪些是有平台差异的需要进行宏控制.
[/Quote]
我是来看楼上的小新的,好evil
qq120848369 2012-05-11
  • 打赏
  • 举报
回复
楼主上班了还没搞明白这个关系...有点可悲了.

一般开源代码都是跨平台的, 所谓跨平台即源代码级别跨平台, 通过宏选择性的使用平台相关的API.

C/CPP库本身就是跨平台的,其接口隐藏了操作系统相关API.

如果你希望编写一个像APACHE一样跨平台的软件,就要在编码时提前考虑好哪些是平台无关接口,哪些是有平台差异的需要进行宏控制.
xue23 2012-05-11
  • 打赏
  • 举报
回复
利用一些跨平台的可复用的类库来实现的。请参考http://www.ibm.com/developerworks/cn/linux/guitoolkit/l-mfc/
ArdourCareful 2012-05-11
  • 打赏
  • 举报
回复
没人试过??
ArdourCareful 2012-05-11
  • 打赏
  • 举报
回复
哪为什么我们公司用VC写的MFC代码为什么能在Linux环境下编译通过生成Linux下的动态库(.so)?
ArdourCareful 2012-05-11
  • 打赏
  • 举报
回复
问了一下开发人:因为在unix下封装了一套适用这个环境的MFC类库,可以跑在不同unix环境下。
哪如何知道某函数是否具有移植性呢?
nice_cxf 2012-05-11
  • 打赏
  • 举报
回复
COleDateTime,cstring有这些的代码能在linux下编译通过?除非重新实现了。。。
或有条件编译选项,在linux下用其他的替代
酱油党 2012-05-11
  • 打赏
  • 举报
回复
你是没用MFC框架,只是按照环境封装的不同API形成的库,当然哪里度能跑
ArdourCareful 2012-05-11
  • 打赏
  • 举报
回复
用到CString类和它的成员函数。以及COleDateTime等类,右键工作空间点设置里面有:使用MFC作为静态链接库。这样能不能说明是MFC程序.
iamnobody 2012-05-11
  • 打赏
  • 举报
回复
http://en.cppreference.com/w/cpp

baichi4141 2012-05-11
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]

哪为什么我们公司用VC写的MFC代码为什么能在Linux环境下编译通过生成Linux下的动态库(.so)?
[/Quote]
你确认那是MFC代码?
帅得不敢出门 2012-05-11
  • 打赏
  • 举报
回复
楼主没睡醒吧。
nice_cxf 2012-05-11
  • 打赏
  • 举报
回复
mfc代码能在linux用?玩笑开大了啊
ArdourCareful 2012-05-11
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 的回复:]
楼主上班了还没搞明白这个关系...有点可悲了.

一般开源代码都是跨平台的, 所谓跨平台即源代码级别跨平台, 通过宏选择性的使用平台相关的API.

C/CPP库本身就是跨平台的,其接口隐藏了操作系统相关API.

如果你希望编写一个像APACHE一样跨平台的软件,就要在编码时提前考虑好哪些是平台无关接口,哪些是有平台差异的需要进行宏控制.
[/Quote]

我就是不知道哪些函数是C++标准库的,哪些函数是与操作系统相关的。怎么确定呢?

汗。。。,不可能重写MFC库,不过我发现LINUX哪台机器上除了原有的VC中代码外,还有一些头文件和.so库
这些头文件和库在Makefile中有引用的。
liujun_ips 2012-05-11
  • 打赏
  • 举报
回复
可能是你们公司重写MFC了哈哈
linux流浪汉 2012-05-11
  • 打赏
  • 举报
回复
为什么二楼的同志无处不在。
码上大侠 2012-05-10
  • 打赏
  • 举报
回复
MFC、.NET类库都不具备平台移植性
某大一菜鸟 2012-05-10
  • 打赏
  • 举报
回复
同楼上,如果想要使代码具备移植性那么推荐QT..
加载更多回复(1)

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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