博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
unix 2 windows 的C++程序移植的一些常见问题 (转)
阅读量:2503 次
发布时间:2019-05-11

本文共 1614 字,大约阅读时间需要 5 分钟。

unix 2 windows 的C++程序移植的一些常见问题 (转)[@more@]

2 的C++移植的一些常见问题

   
 unix下的我已经记不清楚了, 总之因为原来的程序是用makefile的形式编译的, 虽然VC也支持makefile的形式, 但是无论如何在给原来的unix的编译器用的
 makefile是不可能直接给VC的编译器用, 而想去了解 makefile 文件的语法和如何实现相当的功能是一件吃力不讨好的事。所以我最后在VC下用了 Console 程序的形式 来完成程序的移植工作, 当然用其它的形式如 MFC AppWized ...也是可以的, 反正对于每个程序员而言掌握方法以后,爱出什么招都无所谓。
  常见问题1:
  1 文件扩展名, 很奇怪? 大多数的编译器对.cpp 和 .c 文件的处理是不一样的,
  但是也有例外时候, 所以有时你要把.c 的改成 .cpp来用。
  2 #include "stdAfx.h" 加到 .cpp 文件的前面, 当然不加也可以, 你只要在
  工程设置的地方说明一下该cpp文件, not using precompiled headers 或
  Automatic use of precompiled headers;
 
  3 模板类的应用, 一般模板类的实现代码需要写到.h 文件中,或在.h中include
  .cpp 但这样对程序员来说会觉得很不舒服, 用 makefile 的方式可以解决这个
  问题, 但是在VC下又不用makefile,就只有用以上的方法来修改改那些模板类
  的代码了,顺便提一下用g++的编译器我也是觉得用在.h中include .cpp 的方法
  好一些。
 
  4 数据类型的冲突, 重定义, 在国外的大公司在写程序时一般都有这样的习惯: 定义
 自己的数据类型, 如定 INT, DOUBLE, BOOL 等之类的数据类型,然后把这些定义放在  BaseType.h 之类的文件中, 然后在时都是用自己定义的数据来完成,我认为这是一个很好的习惯, 因为你很难预料你写的程序会在不同的平台上跑(16位机, 32位机,  64位机...),用不同的编译器,这样做增强了程序的适应性, 当然有时候这也会引起麻烦, 如BOOL不就是在VC中有定义吗?这类问题在知道问题所在以后就很容易解决了。  
 
  5 变量初始化, 如这样的代码 int*  pInt(NULL), 要改为 int*  pInt = (NULL);
  等如此类的修改。
 
  6 还有一种常见问题就是link过程中找不到定义或定位不到具体的实现代码之类的或重义的情况, 这样情况解决就看具体的原因了, 很没有什么一劳永逸的方法。
 
  7 与特定的或其它的支持环境相关的方法, 这类问题的解决与移植程序要达到什么的目标有很大的关系, 有时可能很容易的解决了, 有时又很难解决。比如有关X11也就是关于 X Window的图形系统的,有一定的情况下可以用把X11库拷过来, 做一下compile 可以但是要做到 link 成功, 就不容易反正在VC下我是没有成功的把含x11应用程序link完成。

   

 以上是我在以前的做移植的工作常见的一些问题, 对于前六种情况的处理非常容易,不花多少时间就可以处理完了,这种问题都是第一次处理的时候需要花些时间,以后碰到都是照旧的方法办就可以,第7种情况就有时就较难处理一些。 因为间隔时间较长可能还有一些内容已经忘了,另外可能还有更好的处理方法我不知道, 有什么不对的地方还希望大家多多指正。
 
   梁 2001/05/15

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/10748419/viewspace-984978/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/10748419/viewspace-984978/

你可能感兴趣的文章
Hibernate初探之单表映射——jar包的导入
查看>>
杨辉三角
查看>>
格式化
查看>>
Wind7 64位配置安卓环境
查看>>
UWP 滚动条私人定制
查看>>
自动将脚本放在页面底部
查看>>
队列课下作业
查看>>
软件开发基本原则(二)—— 典型错误 (转)
查看>>
spring jpa 实体互相引用返回restful数据循环引用报错的问题
查看>>
SQL server 2008数据库的备份与还原(转)
查看>>
设计模式(二)
查看>>
Ubuntu 13.10 下安装node
查看>>
团队项目成员与题目(本地地铁查询app)
查看>>
codeforce 356 A. Knight Tournament(线段树覆盖,3级)
查看>>
MySQL自学笔记5--表联合、表连接、视图、字符集、校对集
查看>>
python3 中的try 异常调试与 raise 异常抛出
查看>>
关于md5加密
查看>>
python爬虫小实例
查看>>
查看日志
查看>>
静态文件---访问图片
查看>>