如何使我的C ++代码跨平台能力?我需要它在Windows和Xubuntu上工作。
答案 0 :(得分:5)
如果我理解这个问题......你可以使用C / C ++预处理器指令:
#if defined(WIN32) || defined(WIN64)
// windows code
#else
// linux and mac code ...
#endif
更新:好的,现在问题很清楚......
对于跨平台c ++代码,您可以使用Qt。它是一个功能强大的c ++框架,它是跨平台和免费的。
答案 1 :(得分:3)
cygwin可以帮助您在Windows上使用linux / unix代码。
答案 2 :(得分:3)
通常,任何相当复杂的程序都需要从一开始就设计为跨平台。将现有程序改编成跨平台是不可能的。
没有更多细节,很难说更多。
有助于填写详细信息的问题包括: 你的程序在哪里不是跨平台的?在用户界面?在特定的图书馆?在特定的OS调用中?
您是否可以访问整个程序的源代码?或者您依赖外部静态库和/或DLL?
答案 3 :(得分:1)
您需要使用跨平台开发库,例如Boost或Apache Portable Runtime或者您需要了解两个平台的API(POSIX和WinApi),以便选择一个主要相互兼容的子集。
答案 4 :(得分:1)
一点建议是抽象出使用os函数的功能。这样,您可以最大限度地减少#define的使用,并使特定于操作系统的组件易于管理。 (见:adapter pattern。)
答案 5 :(得分:0)
没有源代码,你不能。您可以欺骗并模拟另一个操作系统(使用Virtualbox或KVM / Xen)但您无法在Linux上运行Windows二进制文件,反之亦然。
源代码如此重要的原因之一......
答案 6 :(得分:0)
如果您的项目取决于其他库 - 您需要找到目标操作系统的那些库的版本。然后更改构建系统以正确链接那些。
另一个解决方案是将您的项目转换为面向服务的体系结构(SOA),与单一应用程序相比具有许多优势。
答案 7 :(得分:0)
使用预处理程序指令:
#ifdef WIN32 /* WINDOWS CODE */ #else /* LINUX CODE */ #endif