我在c ++中为linux写了一个应用程序,现在我想在windows中使用相同的c ++源代码。
如何将其转换为windows c ++源代码,以便它可以在Windows平台上运行?
答案 0 :(得分:5)
如果它是实际正确且标准的C ++代码,那么它将在任何平台上运行而无需修改。如果不是,那么......你没有提供足够的细节来回答这个问题。
答案 1 :(得分:1)
如果您没有考虑可移植性而编写软件,那么转换软件是一件大事。
显然,第一步是为Windows(vc ++)选择一个c ++编译器并尝试编译。
如果您严重依赖网络/文件系统/线程,请考虑使用可移植的库,如boost::thread,boost::filesystem,boost::asio,...
答案 2 :(得分:1)
最好的方法是为所有与平台/操作系统相关的api调用编写平台抽象层,该层应为所有平台相关的api类型公开一个通用接口。
它基本上应作为您的应用程序和OS /平台之间的抽象。
对于每个端口(Linux或Windows),您实现此接口。您可以为每个端口提供抽象作为单独的库,以确保您的调用应用程序保持相同,只有要链接的库发生更改。
答案 3 :(得分:0)
由于对系统库的潜在依赖性,请注意它是如何完成的,例如,Linux下的套接字与Windows套接字不同(当然有类似命名的函数)。
它可能会帮助您使用诸如此
之类的宏#ifdef __WIN32__
... functions targetting the Windows platform
#else // __GNU_LINUX__
... functions targetting the Linux platform
#endif
这是这样做的一个示例机制,通过这种方式,您可以区分和处理平台细节......所以只要注意平台中的细微差别......
除非您使用的是跨平台兼容的库,例如QT / wxWidgets或类似的库,但不要假设代码无论平台如何都能正常工作。
答案 4 :(得分:0)
如果它是一个使用简单C ++的简单“控制台”应用程序,那么您应该能够直接在Windows上使用该代码。
您可以在Windows上使用gxx / g ++并使用相同的make文件重建;或使用Visual Studio Express并在项目中导入源代码并进行补充(可能/将会出现问题,因此只需修复编译错误/警告)。
如果Linux代码使用Windows上不可用的API和SDK(UI?),则必须使用本机Win32或MFC或应用程序使用的其他类型库将代码移植到Windows上。< / p>
微米。