这可能是一个非常愚蠢的问题,但我希望能够清楚地表达自己。
我的女儿有一个多人游戏源代码。多年来,她一直使用Visual C ++为Windows编译游戏。有一个服务器exe文件和一个客户端exe文件,如果使用Windows服务器,它可以正常工作。
我想知道的是,是否可以编译服务器文件以在Linux服务器上使用并保留Windows的客户端exe文件?或者会出现兼容性问题吗?
谢谢。
答案 0 :(得分:1)
我想知道的是,是否可以将服务器文件编译为 在Linux服务器上使用并保留Windows的客户端exe文件?
是的,这是可能的。事实上,这种事情一直在进行。我这样做是为了谋生。为了实现这一目标,您必须做两件事:
首先使用符合标准的习语,语法和函数编写代码。这也可以通过使用与Windows和Linux兼容的第三方库来实现,例如Boost。
编译目标硬件上的代码。
步骤2可以说是最简单的。您只需要访问带有Linux编译器的Linux机器,例如g ++,然后让我们翻录。在大多数情况下,您需要设置自己的makefile。通常使用诸如CMake之类的工具来实现此目的。
第1步要困难得多。在多个平台(例如Windows和Linux)上合法编译的代码称为“便携式”。如果您从一开始就专注于这样做,那么编写可移植代码就很容易了。另一方面,改造便携性可能是一项庞大的任务。由于这个障碍,许多项目完全被抛弃。如果你的女儿从一开始就没有编写可移植的代码,那么将它变为便携式的可能性几乎是不可能的。
我不是想阻止你尝试。事实上,我鼓励你接受它。根据我的经验,制作一个特定于平台的软件可移植是程序员正确执行的难事之一,但即使项目最终失败,这项工作也会让他们成为更好的程序员,从而获得自己的回报。为了编写可移植代码,我们需要在语言水平上对语言进行相当扎实的掌握。能够编写可移植代码的程序员经常(并不总是)比他们特定于平台的对应程序更熟练。
就兼容性问题而言,脑海中唯一真正的“陷阱”就是字节序。特别是在客户端/服务器类型系统中,您需要尽快解决这个问题。
答案 1 :(得分:0)
很难说,C ++编译器是特定于硬件的(而不是Java),最好的办法是尝试在Linux发行版C ++编辑器上编译它。查看您从中获得的错误并进行故障排除...
祝你好运
答案 2 :(得分:0)
这取决于。我怀疑你能否将Windows代码直接移植到Linux并重新编译。服务器和客户端之间的IPC(进程间通信)可能使用Windows程序编写,并且必须针对Linux进行更改。我很确定他们会针对不同的平台使用不同的呼叫。
当然,如果您有源代码,您可以自己进行这些更改,但可能需要进行一些调试。
Linux套接字信息:http://www.linuxhowtos.org/C_C++/socket.htm
Windows套接字上的信息:http://msdn.microsoft.com/en-us/library/windows/desktop/ms740673(v=vs.85).aspx
答案 3 :(得分:0)
您可以采取多种方法。每个人都有一套独特的权衡和利益。
每一项都需要一定程度的教育,要么学习新的编程环境,要么确定正确的配置和可操作性的变化。有很多免费论坛支持所有人。