您的位置:首页 > 运维架构 > Linux

linux代码移植到vs下使用,不同平台代码移植问题

2012-11-30 23:29 375 查看
今天将linux下对硬盘的管理程序移植到pc上,遇到问题多多。

1、linux硬盘管理程序是c写的,对类型的检查很不严格。写代码的人也没注意类型转换,比如malloc是没有进行类型转换,c中没有bool,代码中用enum定义了个bool,这个跟c++的类型不同。于是在c++编译的时候出现了很多问题。

2、time_t在pc上默认是64位。在c中时32位。需要添加一个宏才能转成32位,这个宏要添加在所有.h的前面。

3、在vs2005中c库有很多种,编译的时候要选择正确的库。中工程设置--c++设置中。

4、在vs2005中字符集选择也是麻烦,如果选择的字符集不对程序就跑不起来,比如CreateFile中的文件名。

5、加入的头文件也有顺序,某些头文件依赖另外的头文件。这个依赖的头文件要在前面。

6、发现pc下的mktime跟linux下的mktime出来的结果又差别。听说是夏令问题,设置time_t结构体中的一个变量。还没弄明白,在pc上怎么改都没有变化。

7、vs2005上导出一个静态库方法,新建项目--win32工程--静态工程。

8、在工程中引入静态库,1加入静态库头文件,2在工程属性中添加新库目录,3#parma(lib, “库名”)

9、vs2005下提供了更加安全的sprintf_s等函数。

10、vs2005下open打开写入字符时如果遇到0x0A会自动在前面加0x0D。用二进制写入就没有这个问题。

11、vs下编译静态库注意选择的运行时库,在使用的时候要用相同的运行时库否则会很多错误
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐