记一次Windows下的工程转到Linux下2019年7月31日

Windows下工程的配置:vs2010+opengl+opencv2.4.3+C++boost库1.53+eigen+vlfeat 0.9.16

需要转到linux下

1、关于互斥锁,window和linux对应的API:https://www.cnblogs.com/lvdongjie/p/4452256.html

2、#include<cstring> Linux中有strlen函数

3、linux下没有strcat_s以及strcpy_s函数,对应的是strcat以及strcpy,这会限制strcpy_s缓存功能的使用。

4、windows下featrue.swap(vector<double>());linux下要vector<double>().swap(feature)

5、windows下的DWORD(也就是unsigned long)在linux没有定义

6、windows下的gettickcount  linux下的clock_gettime

7、windows下的window.h linux下的#pragma comment(lib,"wsock32.lib")但是没用到

8、winDef.h中max和min,Linux没有相关定义可以用这个代替

#define max(a,b) (((a)>(b))?(a):(b))

9、对于opengl,linux下也可以用,GL/gl.h,然而有些gl的官方库有问题,于是工程中就引入了openglut.h这个非官方库,用的时候可以两个库一起用,但是会有冲突,需要把openglut_std.h中两个冲突的函数注释掉,具体的函数cmake会报错进行提示。如果只用openglut.h这个库,显示字符不好用。

10、pthread_create函数是在linux下使用的创建线程的函数。

11、类中static类型的函数,调用的时候需要声明类名称(类名称::函数)

12、windows下itoa函数,将int转换成char,linux下用sprintf,例如:

char buffer[20];
int n=123;
sprintf(buffer,"%d",n);

13、windows下的sprintf_s到linux下,如果不指定缓冲区,可以直接换成sprintf。

14、linux下没有getasynckeystate函数,实现方法可以参考,很好用,但是用的时候注意,只能定义一个kbhit函数,定义多了会有冲突。

15、windows下sleep()函数,形参是毫秒,linxu下<unistd.h>sleep形参是秒,usleep形参是微秒

16、windows下互斥锁createMutex,linux下是pthread_mutex_t

17、linux下有dirent.h文件

18、opencv2XX版本有Nonfree函数,opencv3XX的没有,搞了好久,还是妥协了,重新装了opencv2.4.9

19、opencv的大坑,ROS自带3.3.1!!!!!!!!!搞了好久。。。。还得在cmakelists中设置找opecnv2.4.9库

20、_int64,linux下是long long

21、omp_get_num_procs@@OMP_1.0,这是什么错????自带表情包???解决方法:library_link(_fopenmp)

22、vl库问题,妥协了,编译不过去,不会链接库,只能把所有.c文件放入add_executable。

23、linux总是读文件食栢了,后来发现读的文件目录下,有中文名称的文件夹,cut除去就好了。

发布了42 篇原创文章 · 获赞 43 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_34754836/article/details/97229970
今日推荐