百科问答小站 logo
百科问答小站 font logo



把windows平台下mfc框架的代码移植到linux对编程小白来说难度很大吗?应该学习什么内容呢? 第1页

  

user avatar   Ivony 网友的相关建议: 
      

哦,这是什么神仙解决方案……


user avatar   haozhi-yang-41 网友的相关建议: 
      

你还是继续投简历吧,反正你也刚入职。


user avatar   s.invalid 网友的相关建议: 
      

这个要看原软件是干什么的、具体有哪些功能了。


对小白来说嘛……那要看什么样的小白。要我刚毕业的水平那就和玩一样;但对绝大多数计算机专业毕业生,那几乎是难比登天。


如果想挑战一下的话,可以这样做:

1、先搞明白这是个什么软件、都有什么功能;写个文档,罗列出它所有的功能点。

2、根据罗列的所有功能点,找到对应的源码(比如点击某个按钮后执行统计,那么你就要把这段统计逻辑找出来);然后开个excel表,把相应的源码写到功能点后面。这些经常可以原样拷贝到其他平台(但某些API可能需要替换)。

3、找齐了所有的功能点和实现代码后,剖析它和界面是如何结合的(注意诸如各种小提示、变色等细小功能的实现),这些常常是不可移植的,需要在目标平台重写。

4、学习Qt或者GTK框架,完成移植。


早期的MFC几乎无封装,很多代码实现的很罗嗦;在新的QT/GTK框架下可以做的很简洁。

早期的网络通讯几乎都是赤裸裸的使用socket相关API,这套API在各大平台基本是通用的,至多命名风格略有不同。

因此,这个移植其实难度不大:熟悉Qt/GTK里面按钮事件的写法、知道怎么用tool tips,然后直接拷贝相应的事件处理函数源码即可——C/C++的可移植性还是挺不错的,看到错误提示找一找对应API在Linux下是哪个头文件声明的、接口和Windows有无微妙差别,然后改过去就是。

除了那些很细腻的tool tips或字体改变(加黑、斜体、变色)等提示信息,里面90%的代码都可以直接复制。


当然,如果你觉得他原本写的太烂的话,参考他的旧有实现自己重写也行。


user avatar   pansz 网友的相关建议: 
      

难不难什么的,其实还是与工作量相关的。

如果源代码一共也就一二十个文件,总代码量不足千行,那这个项目也就难不到哪儿去。一个正常思路的领导应该不会让新人移植过于复杂的项目。

至于C++要不要恶补?这个不需要吧,反正这个代码本身根本就是不能用的,你只是看代码然后当作需求自己重写而已。Linux这边完全可以不用C++写。你就说说你擅长什么吧,擅长啥就用啥。原MFC代码只要能看懂,不会写都没关系。

Linux这边,你想要用python,用java/kotlin,用go,用nodejs 什么的其实都行。只要你能看懂源代码,自己一行一行抄写过来实现即可。

至于你该学什么?首先取决于项目的代码量,如果代码量较大,建议你直接跑路。代码量较小,那可以试试。MFC的代码在其他环境都不能用,所以这代码只能看。自己看代码的逻辑,理解完了自己重写即可。

要搞清楚领导的意图,如果只是跑起来的话,用wine跑起来也是个办法。如果只是搞个小项目让你练手同时考核的话,这也算是不错的机会,毕竟完全重写代码这种事,很多程序员是欢迎的,比让你修改屎山代码舒服多了。


user avatar   bai-ru-bing-58 网友的相关建议: 
      

如果我做这项工作,先考虑在Windows平台下的改造,把GUI和逻辑拆离,逻辑模块保证只用标准C/C++。网络部分改造成用跨平台网络库如asio的。旧代码的逻辑模块中必然有一些日志系统等依赖Windows API的,这些都可以通过回调基类实现。

具体操作,你可以看下一些知名的代码库,逻辑部分和各个目标平台的sample是如何分工隔离的。

这些都做完后再考虑linux平台的移植问题。

但是我还是建议你跑路。




  

相关话题

  Linux 应该装个虚拟机还是买个二手电脑呢? 
  C# 的匿名类型为什么要限制属性为只读呢? 
  虚函数一定是运行期才绑定么? 
  如何通过自学找到一份开发的工作? 
  男友让我打十万个「对不起」,汉字标上多少遍。如何快速实现? 
  linux内核切换成分页模式后,ljmp $__BOOT_CS,$1f 这行代码有什么意思? 
  我们为什么不尽早施行国产 CPU+国产 Linux 系统战略呢? 
  有哪些话一听就知道一个程序员是个水货? 
  教授说没有写过一千行以上代码的程序就别想上大公司,这种说法对吗? 
  为什么KK说Emacs是最有程序猿范的编写工具而林斌表示用vi的不同意呢?怎么评价vi和Emacs呢? 

前一个讨论
如果人体的安全电压不再是 36V 而是 0V,会有什么后果,会怎样影响世界?
下一个讨论
我们所认知的宇宙有没有可能本身就是一个黑洞?





© 2024-11-22 - tinynew.org. All Rights Reserved.
© 2024-11-22 - tinynew.org. 保留所有权利