CPP - 将源代码从Windows转换为Linux

时间:2017-04-23 11:19:28

标签: c++ linux windows

我有一个单文件CPP应用程序,专为Windows而构建,仅在命令行中运行。

我正在努力让它也适用于Linux。

该应用程序使用的唯一库是:

#include <iostream>
#include "setjmp.h"
#include "windows.h"
#include "time.h"

它还使用各种无符号整数(uint8,uint16,uint32,uint64)。

除此之外,还没有任何其他Windows特定的API。

我的问题是如何转换代码以便它与Linux兼容? 有一个简单的方法吗?

1 个答案:

答案 0 :(得分:1)

反过来做。代码,可能使用某些跨平台框架,如PocoQt(也可用于非GUI代码,例如使用QtCore 而不使用 {{3 }},或QtGui,以某种Windows独立方式,并在两个操作系统上定期编译。

BTW setjmp.h是C ++不友好的(与C ++异常混乱和不兼容),即使在Windows上也是如此。

删除

#include "setjmp.h" /// wrong in all C++ programs
#include "windows.h"  //// specific to Windows

然后修复代码(例如所有编译错误;但在Linux编译时使用所有警告和调试信息,例如使用g++ -Wall -Wextra -g),可能使用类似我提到的框架。

不要转换 C ++代码(从Windows到Linux),但要努力编写可移植的 C ++代码,这要归功于一些精心挑选的框架。

也许您的应用程序可以用一些纯粹的可移植C ++ 11编写(但是,不需要#include "windows.h")。命令行实用程序(如wccatgrep(具有所有功能的子集)可能可以用可移植的C ++ 11编写 - 甚至可能不需要任何其他框架。

PS。如果没有源代码并且不了解该应用程序是什么,则无法为您提供更多帮助。您的首要任务是准确理解代码以及它应该在Windows上执行的操作。也许用干净的C ++ 11(可能还有一些额外的框架......)重写它是最快捷的方法。