gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 11:17:05 25 4
gpt4 key购买 nike

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

不幸的是,运行 Linux 的计算机不是我的,所以我无法使用 Wine 或其他大规模编译器更改方法进行任何简单的破解,我真的需要一些关于移植我的代码的建议,以便它能够被识别和工作在不同的操作系统中。

计算机确实安装了 code::blocks,据我所知,这对于转换一些东西以进行跨操作系统编译非常有用,但我并没有走得太远。

原始代码是在 Visual Studio 2013 中编写的,可以理解它在 code::blocks 中表现不佳。我收到很多“无法找到 header ”错误,但我认为简单地找到所有丢失的 header 并将它们复制过来是行不通的(会吗?)。

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

我真的不知道从哪里开始,在线搜索似乎也没什么帮助。

谢谢!

最佳答案

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

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

最终涉及的工作取决于您的代码中有多少特定于窗口的调用。

关于C++ Windows 到 Linux - 我需要知道什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20355318/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com