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下编译静态库注意选择的运行时库,在使用的时候要用相同的运行时库否则会很多错误
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下编译静态库注意选择的运行时库,在使用的时候要用相同的运行时库否则会很多错误
相关文章推荐
- cocos2dx项目移植android平台使用第三方so库被删掉的问题
- Linux下使用Eclipse编译C/C++代码时遇到问题的说明
- Windows到Linux系统代码移植遇到的问题
- 几个 Windows 到 Linux 的代码移植问题
- Linux平台不同解压缩命令的使用方法
- 使用UnityVS1.8.2搭配VS2013进行Unity3D代码调试(下载+安装+使用+问题解决)
- cocos2dx使用了第三方库照样移植android平台-解决iconv库的移植问题
- linux网卡状态程序移植到android无法使用getifaddrs的问题
- [转]多操作系统平台协同开发时 GIT 的注意事项: 不同操作系统中的换行符(不要使用git的换行符自动转换功能,并且,尽可能保证代码的换行符都是unix); 避免使用第三方插件(如 EGit );
- windows到Linux代码移植遇到的问题
- 关于windows mobile工程代码在不同wm平台间的移植
- 解决Windows和Linux使用npm打包js和css文件不同的问题
- 在Linux下使用NDK把libcurl移植到android平台的过程
- cocos2dx使用了第三方库照样移植android平台-解决iconv库的移植问题
- 不同平台windows、linux、mac 上换行符的问题
- 几个 Windows 到 Linux 的代码移植问题
- 多操作系统平台协同开发时 GIT 的注意事项: 不同操作系统中的换行符(不要使用git的换行符自动转换功能,并且,尽可能保证代码的换行符都是unix); 避免使用第三方插件(如 EGit );
- Linux总结之Ralink雷凌rt3070驱动的ARM平台移植问题
- [C] 跨平台使用TCHAR——让Linux等平台也支持tchar.h,解决跨平台时的格式控制字符问题,多国语言的同时显示(兼容vc/gcc/bcb,支持Windows/Linux/Mac)
- 使用vs(visual studio code)写python代码遇到的import requests失败问题