windows下C++程序移植到linux下的问题

w364483790 2011-06-20 04:11:17
把windows下C++程序移植到linux下的问题要注意那些问题,最近接到上近命令,要把之前用C++写的一个协议解析程序移植到LINUX下运行,在网上看了些东西,但感觉还是无从下手,比如CString等windows下的东西怎么处理,求高手指点,最好尽量详细一点,因为我是菜鸟!!成分感谢!!
...全文
842 27 打赏 收藏 转发到动态 举报
写回复
用AI写文章
27 条回复
切换为时间正序
请发表友善的回复…
发表回复
KAMCHIHAU 2011-06-22
  • 打赏
  • 举报
回复
這個也是說明為何很多跨平台的程序,
它們的代碼量為何這麼大,
它們是一個程序,當中又有WINDOWS,又有LINUX的代碼,
w364483790 2011-06-22
  • 打赏
  • 举报
回复
先谢谢大家的帮助,现在在写makefile,发现这个又不会写
我现在有二个项目A(A.h,A.cpp)/B(B.h,B.cpp),A要编译成一个静态库A.a,B要编译成一个动态库B.so,但A又调用了一个动太库C.so,这个makefile要怎么写呢?我是第一次接触linux,是个菜鸟,求高手帮忙写一个,越详细越好,万分感谢!!!
hzy694358 2011-06-22
  • 打赏
  • 举报
回复
移植的话,就是Windows系统的API都不能用了
换用linux下的来实现就可以了
如果涉及到MFC的话,比如CString 用string
如果还有什么窗口之类的话,呵呵,不用我说了吧
独酌逸醉 2011-06-22
  • 打赏
  • 举报
回复
MFC是不可移植的,怎么能移植到linux?所谓的移植就是重写!
赵4老师 2011-06-22
  • 打赏
  • 举报
回复
直接运行在Linux下的WinXP虚拟机上不就完了。
zhaoli_1956 2011-06-22
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 jdk_mo 的回复:]

如果你在原来的程序中大量用了Windows API的话,建议你不要移植了,重新写吧!!还少烦恼呢。。
[/Quote]

++
小小蔷薇 2011-06-22
  • 打赏
  • 举报
回复
直接编译,哪里有错误改哪里
wentian719 2011-06-22
  • 打赏
  • 举报
回复
1、先花点时间熟悉linux下c/c++程序如何编写,如楼主提到的makefile等问题;
2、尽量用夸平台库库,stl等;
3、与系统有关的实现多用宏,或者自己写函数封装;
4、一个个文件编译,一个个错误改,还是有可能的,如果代码量特别大,可以考虑重写。。
科比布莱恩特 2011-06-22
  • 打赏
  • 举报
回复
使用string,使用windows sdk,使用ini文件等等比较多。

干脆推翻了重写得了。
一叶之舟 2011-06-21
  • 打赏
  • 举报
回复
协议解析程序属于后台数据处理类的程序,应该好写的多,你还可以将他写成win32和linux下兼容的代码,方便在不同的平台下使用。
一叶之舟 2011-06-21
  • 打赏
  • 举报
回复
涉及UI部分的没具体做过,但非UI的代码,都是可以处理的。
一叶之舟 2011-06-21
  • 打赏
  • 举报
回复
1、检查涉及MFC特性的代码有多少,与linux下不兼容的API有哪些。
2、能用宏定义的进行宏定义,如win32下Sleep(1000)==linux下sleep(1),处理方法如下。
#ifndef WIN32
#defin Sleep(i) sleep(i/1000)
#endif
这样,Sleep(1000)这个WIN32下的函数在linux下也就是正常的调用。
3、数据类型尽量使用标C/C++中的,CString用sting代替,或用char []代替。
自由建客 2011-06-21
  • 打赏
  • 举报
回复
几无可能
futurepi 2011-06-21
  • 打赏
  • 举报
回复
学习一下
KAMCHIHAU 2011-06-20
  • 打赏
  • 举报
回复
不可能移植的,不是想像中那么簡單的
gulunhua 2011-06-20
  • 打赏
  • 举报
回复
你的程序是看样子事用MFC来写的,基本上就别想改成linux下能运行的,还是重写吧,如果一开始只用一些基和标准的网络API来写程序,像:send,recv,select等,而不是用扩展的api的话,不用widnows下的非阻塞api的话,并且字符处理和数据处理,以及基本的数据结构,都自己实现,那估计在unix,bsd,。。。畅通无阻,在任何系统上修改一下相应的头文件名称,重新编译一下就行了。
icelemon1314 2011-06-20
  • 打赏
  • 举报
回复
拿到Linux 下编译 然后把错误全部搞定~ 就OK了~~~
葳蕤 2011-06-20
  • 打赏
  • 举报
回复
相对于移植程序,更关注一开始就设定平台无关框架,做多平台支持的程序。大多开源程序都是如此,就是不清楚其是如何一步步开发构建起来的,CMake?
就想叫yoko 2011-06-20
  • 打赏
  • 举报
回复
用了太多就不好改了
jdk_mo 2011-06-20
  • 打赏
  • 举报
回复
如果你在原来的程序中大量用了Windows API的话,建议你不要移植了,重新写吧!!还少烦恼呢。。
加载更多回复(7)

64,670

社区成员

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

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