C++ c++;linux服务器和windows客户端上的源代码?

C++ c++;linux服务器和windows客户端上的源代码?,c++,linux,windows,C++,Linux,Windows,这可能是一个非常愚蠢的问题,但我希望能够清楚地表达我自己 我女儿有一个多人游戏的源代码。多年来,她用Visual C++编写了Windows的游戏。有一个服务器exe文件和一个客户端exe文件,如果使用Windows服务器,这两个文件都可以正常工作 我想知道的是,是否可以编译服务器文件以在linux服务器上使用,并保留windows的客户端exe文件?还是会有兼容性问题 P> >很难说,C++编译器是硬件专用的(与java相反),你最好的办法是尝试在Linux发行版C++编辑器上编译它。查看您

这可能是一个非常愚蠢的问题,但我希望能够清楚地表达我自己

我女儿有一个多人游戏的源代码。多年来,她用Visual C++编写了Windows的游戏。有一个服务器exe文件和一个客户端exe文件,如果使用Windows服务器,这两个文件都可以正常工作

我想知道的是,是否可以编译服务器文件以在linux服务器上使用,并保留windows的客户端exe文件?还是会有兼容性问题


<> P> >很难说,C++编译器是硬件专用的(与java相反),你最好的办法是尝试在Linux发行版C++编辑器上编译它。查看您得到的错误并从中排除故障


祝你好运,这要看情况而定。我怀疑您是否能够将Windows代码直接移植到Linux并重新编译。服务器和客户机之间的IPC(进程间通信)很可能是使用Windows过程编写的,必须针对Linux进行更改。我相当肯定他们对不同的平台使用不同的调用

当然,如果您有源代码,您可以自己进行这些更改,但可能需要一些调试

有关Linux套接字的信息:

有关Windows套接字的信息:

我想知道的是,是否可以将服务器文件编译为 在linux服务器上使用并保留windows客户端exe文件

是的,有可能。事实上,这种事情一直都在做。我以做为生。为了实现这一点,您必须做两件事:

  • 首先,只使用符合标准的习惯用法、语法和函数编写代码。这也可以通过使用与Windows和Linux兼容的第三方库(如Boost)来实现

  • 在目标硬件上编译代码

  • 步骤2可以说是最简单的。您所需要的只是使用linux编译器(如g++)访问linux机器,然后让我们来rip。在大多数情况下,您需要设置自己的makefile等。通常使用诸如CMake之类的工具来实现这一点

    第一步要困难得多。可在多个平台(如Windows和Linux)上合法编译的代码称为“可移植代码”。如果您从一开始就专注于编写可移植代码,那么编写可移植代码就很容易了。另一方面,改装便携性可能是一项艰巨的任务。由于这一障碍,许多项目被完全放弃。如果您的女儿从一开始就没有编写过可移植代码,那么很有可能使其具有可移植性几乎是不可能的

    我不是想劝阻你不要尝试。事实上,我鼓励你接受它。根据我的经验,让特定于平台的软件可移植是程序员很难正确完成的事情之一,但即使项目最终失败,也会通过让他们成为更好的程序员而获得回报。为了编写可移植的代码,需要在基本的层面上对语言有相当扎实的掌握。能够编写可移植代码的程序员通常(并非总是)比特定于平台的程序员更熟练


    就兼容性问题而言,唯一真正让人想到的是endianness。尤其是在客户机/服务器类型的系统中,您需要尽早解决这个问题。

    您可以采取几种方法。每种方法都有一套独特的权衡和好处

  • 重写代码以使用本机服务在Linux上编译。难度+++,好处+++
  • 重写代码以使用提供所需服务的独立于平台的库。难度++,好处+++
  • 在运行Windows的Linux托管虚拟机中运行.exe代码。不难,有好处++
  • 使用兼容层在Linux上运行.exe,该层将Windows调用转换为Linux等效调用。对于许多正确编写的Windows程序来说,这非常有效。不难,有好处++

  • 其中每一项都需要一定程度的教育,学习新的编程环境或确定适当的配置和可操作性的变化。有很多免费论坛支持所有人。

    根据服务器的编写方式,它可能1)根本不编译,2)编译但运行不完全正确,3)工作完美。根据你所说的,很难猜出是哪个。除非一个应用程序是一个非常简单的纯文本“hello world”,否则你肯定不能“重新编译”以使它在其他系统上工作。它们具有完全不同的系统调用和API,并且彼此不兼容。你可以在Linux中使用WINE运行Windows版本,但这并不能保证。如果写得好的话,它可能工作得很好。你得试试看