我和我的两个朋友正在一起编写一个编程项目,但仍然是分开的,我想补充一点,我们都非常喜欢编程。现在我们都要用不同的语言编写相同的应用程序,因为我们都是用不同的语言自学。我将用C#编写应用程序,朋友1将用C ++ / CLI编写它,而朋友3将用Java(或J#)编写它。
现在我们要制作的应用程序将成为“纸牌游戏引擎”。它将是一个应用程序,将能够加载和播放不同类型的标准西部52卡牌甲板游戏,如扑克或二十一点等。这个实际的应用程序,我们将分开编写,但我们想加载实际的“纸牌游戏“作为外部模块,我猜我们会为此制作单独的组件?现在我们的要求之一是这些“纸牌游戏”模块应该能够跨语言,我的意思是我应该能够使用我的“BlackJack C#模块”并将其加载到他的“C ++”中游戏引擎的版本,反之亦然。
所以我有两个问题
答案 0 :(得分:4)
我想补充一点,我们都非常喜欢编程。现在我们都要用不同的语言编写相同的应用程序,因为我们都是用不同的语言自学。
这句话的答案很简单:不要。甚至不考虑这样做。选择一种语言并坚持下去。
所以我有两个问题1)这有可能吗?根据我的理解,所有.NET语言都可以在同一个解决方案下编译?如果我们将“模块”编写为程序集,那么它们应该能够访问某些方法,反之亦然,或者我在这里错了吗?
您可以使用中介语沟通工具,但这需要学习一些非常先进的东西。
2)由于朋友2实际上并不是用.NET语言编程,有没有一种简单的方法来制作一个可以解决这个问题的Java解决方案?他是否可以将“纸牌游戏”模块编写为DLL,然后我们可以导入到我们的单独项目中?或者他是否更容易在J#中编写应用程序?
再一次,不要。你的事情比他们应该做的更难。您不能将JNI或JNA与.NET wiki一起使用,并且可以轻松地将它们与Java进行网格化。由于您都是编程新手,所以再次选择通用标准并坚持使用它们会更好。即使你不是编程新手,你也可以做得更好。
请注意,我已经完成了一些语言间程序,但不是选择,只是因为我必须这样做。这些都是简单的事务,信息使用标准输入和输出(套接字)作为文本传递。我还使用JNA来创建可以调用在C中创建的程序的Java程序,然而这又充满了许多技巧和陷阱,我已经陷入了几个,如果可以避免的话,再次不推荐这条路线。此外,您不能让Java以这种方式与.NET语言通信。
更高级别进程间通信的其他选项包括使用Remote Procedure Call Library,其中有许多,但这也会为您的程序增加额外的不必要的复杂性。