27 个解决方案
#1
把所有windows和mfc相关的都剔除掉,数据结构换成stl的,系统调用换linux下类似功能的。
如果之前与windows结合太紧的话,有些地方可能需要重写
如果之前与windows结合太紧的话,有些地方可能需要重写
#2
尽量的采用标准库和跨平台库来写
#3
CString是MFC里的,可以改用string。
如果代码一开始就没考虑移植,代码里到处分布了一大推系统特有的东西,那改起来就很麻烦了。
如果代码一开始就没考虑移植,代码里到处分布了一大推系统特有的东西,那改起来就很麻烦了。
#4
个人认为先要学会在linux下使用
man 要查看帮助的shell命令或c语言函数
man 2 要查看帮助的c语言函数
命令。
man 要查看帮助的shell命令或c语言函数
man 2 要查看帮助的c语言函数
命令。
#5
确实没怎么考虑移植,所以现在都不知道怎么下手
#6
那位朋友有没有从windows下C++程序移植到linux下的相关资料,在网上怎么找不到什么资料
#7
所有windowsAPI提供的数据结构都替换成STL中相应的就行了,例如cstring改为std::string ,不过如果工程比较大,改起来估计很头疼,主要是很多windownsAPI提供的函数借口需要替换或者重写……
#8
如果你在原来的程序中大量用了Windows API的话,建议你不要移植了,重新写吧!!还少烦恼呢。。
#9
用了太多就不好改了
#10
相对于移植程序,更关注一开始就设定平台无关框架,做多平台支持的程序。大多开源程序都是如此,就是不清楚其是如何一步步开发构建起来的,CMake?
#11
拿到Linux 下编译 然后把错误全部搞定~ 就OK了~~~
#12
你的程序是看样子事用MFC来写的,基本上就别想改成linux下能运行的,还是重写吧,如果一开始只用一些基和标准的网络API来写程序,像:send,recv,select等,而不是用扩展的api的话,不用widnows下的非阻塞api的话,并且字符处理和数据处理,以及基本的数据结构,都自己实现,那估计在unix,bsd,。。。畅通无阻,在任何系统上修改一下相应的头文件名称,重新编译一下就行了。
#13
不可能移植的,不是想像中那么簡單的
#14
学习一下
#15
几无可能
#16
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 []代替。
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 []代替。
#17
涉及UI部分的没具体做过,但非UI的代码,都是可以处理的。
#18
协议解析程序属于后台数据处理类的程序,应该好写的多,你还可以将他写成win32和linux下兼容的代码,方便在不同的平台下使用。
#19
先谢谢大家的帮助,现在在写makefile,发现这个又不会写
我现在有二个项目A(A.h,A.cpp)/B(B.h,B.cpp),A要编译成一个静态库A.a,B要编译成一个动态库B.so,但A又调用了一个动太库C.so,这个makefile要怎么写呢?我是第一次接触linux,是个菜鸟,求高手帮忙写一个,越详细越好,万分感谢!!!
我现在有二个项目A(A.h,A.cpp)/B(B.h,B.cpp),A要编译成一个静态库A.a,B要编译成一个动态库B.so,但A又调用了一个动太库C.so,这个makefile要怎么写呢?我是第一次接触linux,是个菜鸟,求高手帮忙写一个,越详细越好,万分感谢!!!
#20
這個也是說明為何很多跨平台的程序,
它們的代碼量為何這麼大,
它們是一個程序,當中又有WINDOWS,又有LINUX的代碼,
它們的代碼量為何這麼大,
它們是一個程序,當中又有WINDOWS,又有LINUX的代碼,
#21
使用string,使用windows sdk,使用ini文件等等比较多。
干脆推翻了重写得了。
干脆推翻了重写得了。
#22
1、先花点时间熟悉linux下c/c++程序如何编写,如楼主提到的makefile等问题;
2、尽量用夸平台库库,stl等;
3、与系统有关的实现多用宏,或者自己写函数封装;
4、一个个文件编译,一个个错误改,还是有可能的,如果代码量特别大,可以考虑重写。。
2、尽量用夸平台库库,stl等;
3、与系统有关的实现多用宏,或者自己写函数封装;
4、一个个文件编译,一个个错误改,还是有可能的,如果代码量特别大,可以考虑重写。。
#23
直接编译,哪里有错误改哪里
#24
++
#25
直接运行在Linux下的WinXP虚拟机上不就完了。
#26
MFC是不可移植的,怎么能移植到linux?所谓的移植就是重写!
#27
移植的话,就是Windows系统的API都不能用了
换用linux下的来实现就可以了
如果涉及到MFC的话,比如CString 用string
如果还有什么窗口之类的话,呵呵,不用我说了吧
换用linux下的来实现就可以了
如果涉及到MFC的话,比如CString 用string
如果还有什么窗口之类的话,呵呵,不用我说了吧
#1
把所有windows和mfc相关的都剔除掉,数据结构换成stl的,系统调用换linux下类似功能的。
如果之前与windows结合太紧的话,有些地方可能需要重写
如果之前与windows结合太紧的话,有些地方可能需要重写
#2
尽量的采用标准库和跨平台库来写
#3
CString是MFC里的,可以改用string。
如果代码一开始就没考虑移植,代码里到处分布了一大推系统特有的东西,那改起来就很麻烦了。
如果代码一开始就没考虑移植,代码里到处分布了一大推系统特有的东西,那改起来就很麻烦了。
#4
个人认为先要学会在linux下使用
man 要查看帮助的shell命令或c语言函数
man 2 要查看帮助的c语言函数
命令。
man 要查看帮助的shell命令或c语言函数
man 2 要查看帮助的c语言函数
命令。
#5
确实没怎么考虑移植,所以现在都不知道怎么下手
#6
那位朋友有没有从windows下C++程序移植到linux下的相关资料,在网上怎么找不到什么资料
#7
所有windowsAPI提供的数据结构都替换成STL中相应的就行了,例如cstring改为std::string ,不过如果工程比较大,改起来估计很头疼,主要是很多windownsAPI提供的函数借口需要替换或者重写……
#8
如果你在原来的程序中大量用了Windows API的话,建议你不要移植了,重新写吧!!还少烦恼呢。。
#9
用了太多就不好改了
#10
相对于移植程序,更关注一开始就设定平台无关框架,做多平台支持的程序。大多开源程序都是如此,就是不清楚其是如何一步步开发构建起来的,CMake?
#11
拿到Linux 下编译 然后把错误全部搞定~ 就OK了~~~
#12
你的程序是看样子事用MFC来写的,基本上就别想改成linux下能运行的,还是重写吧,如果一开始只用一些基和标准的网络API来写程序,像:send,recv,select等,而不是用扩展的api的话,不用widnows下的非阻塞api的话,并且字符处理和数据处理,以及基本的数据结构,都自己实现,那估计在unix,bsd,。。。畅通无阻,在任何系统上修改一下相应的头文件名称,重新编译一下就行了。
#13
不可能移植的,不是想像中那么簡單的
#14
学习一下
#15
几无可能
#16
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 []代替。
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 []代替。
#17
涉及UI部分的没具体做过,但非UI的代码,都是可以处理的。
#18
协议解析程序属于后台数据处理类的程序,应该好写的多,你还可以将他写成win32和linux下兼容的代码,方便在不同的平台下使用。
#19
先谢谢大家的帮助,现在在写makefile,发现这个又不会写
我现在有二个项目A(A.h,A.cpp)/B(B.h,B.cpp),A要编译成一个静态库A.a,B要编译成一个动态库B.so,但A又调用了一个动太库C.so,这个makefile要怎么写呢?我是第一次接触linux,是个菜鸟,求高手帮忙写一个,越详细越好,万分感谢!!!
我现在有二个项目A(A.h,A.cpp)/B(B.h,B.cpp),A要编译成一个静态库A.a,B要编译成一个动态库B.so,但A又调用了一个动太库C.so,这个makefile要怎么写呢?我是第一次接触linux,是个菜鸟,求高手帮忙写一个,越详细越好,万分感谢!!!
#20
這個也是說明為何很多跨平台的程序,
它們的代碼量為何這麼大,
它們是一個程序,當中又有WINDOWS,又有LINUX的代碼,
它們的代碼量為何這麼大,
它們是一個程序,當中又有WINDOWS,又有LINUX的代碼,
#21
使用string,使用windows sdk,使用ini文件等等比较多。
干脆推翻了重写得了。
干脆推翻了重写得了。
#22
1、先花点时间熟悉linux下c/c++程序如何编写,如楼主提到的makefile等问题;
2、尽量用夸平台库库,stl等;
3、与系统有关的实现多用宏,或者自己写函数封装;
4、一个个文件编译,一个个错误改,还是有可能的,如果代码量特别大,可以考虑重写。。
2、尽量用夸平台库库,stl等;
3、与系统有关的实现多用宏,或者自己写函数封装;
4、一个个文件编译,一个个错误改,还是有可能的,如果代码量特别大,可以考虑重写。。
#23
直接编译,哪里有错误改哪里
#24
++
#25
直接运行在Linux下的WinXP虚拟机上不就完了。
#26
MFC是不可移植的,怎么能移植到linux?所谓的移植就是重写!
#27
移植的话,就是Windows系统的API都不能用了
换用linux下的来实现就可以了
如果涉及到MFC的话,比如CString 用string
如果还有什么窗口之类的话,呵呵,不用我说了吧
换用linux下的来实现就可以了
如果涉及到MFC的话,比如CString 用string
如果还有什么窗口之类的话,呵呵,不用我说了吧