C ++ Windows到Linux - 我需要知道什么?

时间:2013-12-03 15:36:52

标签: c++ linux gcc bluetooth porting

我尝试将代码从Windows移植到Linux时有点困难。我创建了一个基于蓝牙的程序,它似乎可以在Windows中运行,我需要在Ubuntu中工作。

不幸的是,使用Linux的计算机不是我的,所以我不能使用Wine或其他大规模的编译器更改方法,我真的需要一些关于移植我的代码的建议,所以它会得到认可和工作在不同的操作系统中。

计算机确实安装了代码::块,根据我的理解,这对于转换一些用于跨操作系统编译的东西非常有用,但我不会太过分。

原始代码是用Visual Studio 2013编写的,可以理解的是它在code :: blocks中不能很好用。我收到了很多'找不到标题'的错误,但我不认为只是找到所有丢失的标题并将它们复制过来就可以了(是吗?)。

对于我的情况,我需要一些关于最简单,最独立的解决方案的建议。通过独立我的意思是我想在我的项目中获得所需的更改和库,而不是在Linux机器上更改/安装很多东西。

我真的不知道从哪里开始,在线搜索似乎没有太大帮助。

谢谢!

1 个答案:

答案 0 :(得分:1)

首先,我建议您检查一下您的Windows代码,然后在您的类中使用PIMPL idiom(还有herehere,...)来隔离所有依赖于平台的代码用于分隔Windows和Linux类实现的代码。然后,您的主要独立于平台的类将在编译时使用预处理器宏委派给每个实现,以包含适当的平台实现头和cpp文件。 除此之外,许多运行时函数,在Visual Studio中实现为Microsoft特定的,或者已被“修改”,并且不再兼容,甚至与您在linux中找到的标准名称相同。对于这些,您需要使用platform.h和platform.cpp文件,两个操作系统的单独部分,包含宏定义形式的缺失函数(即windows:strnicmp(),linux:strncasecomp( )),或者自己写下遗失的那些。例如:

// Linux section ...
#ifdef LINUX
#define strnicmp strncasecmp
#endif

最后的工作取决于您的代码中有多少个特定于Windows的调用。