2011-08-02 159 views

回答

5

如果它是实际正确和标准的C++代码,那么它将在任何平台上运行而不需要修改。如果不是,那么......你没有提供足够的细节来回答这个问题。

+1

如果使用某些特定于Linux的库的正确和标准C++代码会怎样? – svick

1

如果你没有考虑到可移植性,转换软件是一件大事。

很明显,第一步是获得windows(vC++)的C++编译器选择并尝试编译。

如果您在很大程度上依赖于网络/文件系统/线程考虑使用像boost::threadboost::filesystemboost::asio便携式libary的,...

0

要小心,它是怎么做的,由于系统对潜在的依赖库,例如Linux下的套接字,与Windows套接字不同(确实有一个类似命名的函数)。

它可以帮助您使用宏,因为这

#ifdef __WIN32__ 
... functions targetting the Windows platform 
#else // __GNU_LINUX__ 
... functions targetting the Linux platform 
#endif 

这是干嘛呢,这样一来,就可以区分和处理平台具体的例子机制......所以只是提防平台之间的细微差异...

这就是除非,您正在使用跨平台兼容的库,如QT/wxWidgets或类似的,但不要认为代码将按原样工作,不管平台如何。

0

如果它是使用简单C++的简单“控制台”应用程序,那么您应该能够直接在Windows上使用代码。

您可以在窗口上使用gxx/g ++并使用相同的make文件重建;或者使用Visual Studio Express并在项目中导入源代码并将其编译(可能会有问题,因此只修复编译错误/警告)。

如果Linux代码使用API​​和SDK(UI?)在Windows上不可用,则必须使用本机Win32或MFC或应用程序使用的其他类型库移植代码以在Windows上工作。

M.

1

最好的办法是写于所有平台/操作系统相关API调用的平台抽象层,该层将暴露所有与平台相关的API类型的通用接口。

它基本上应作为您的应用程序和OS /平台之间的抽象。

对于每个端口(Linux或Windows),都要实现此接口。您可以将抽象作为每个端口的单独库提供,以确保您的调用应用程序保持不变,只有要链接的库发生更改。