1

请看下面的设计。它是一个框图,用于显示组件

在此处输入图像描述

请注意,这是一个桌面应用程序的图表。您在这里看到的是组件,而不是类。以下是说明

C++/CLI code - The main GUI and the connector for all other services
OpenCV C++ Code - set of Opencv classes for image and video processing
C++ SMS Code - set of SMS classes written in C++

C# wrapper DLL - The dll to access the driver
C# Driver DLL - The driver of the device, written in C#
Speech recognition C# dll - set of speech recognition classes

Google Map DLL/JAR - Google map classes written in either C# or Java

Device - The device I need to access

现在,我的问题。

如您所见,这是技术和语言的集合。对我来说,用 c# 编写所有语音代码似乎很容易,而不是将它们移动到 C++/CLI(其他 C# dll 必须是 C#)。但是,我觉得与其他 C++ 代码集成的 dll 太多了。我无法在 C# 或 Java 中创建 GUI。我必须实现 Opencv(主要的),最简单的方法是 C++。

那么,像这样混合语言和技术是否可以/很好,就像混合一样?

4

2 回答 2

2

如果该解决方案为您提供了您想要的期望和性能并且易于维护,那么我认为它没有问题。如果你看一下 Linux,它是建立在许多经常链接在一起的小程序之上的,因此将 C++ 与 perl、php、ruby、C 代码等一起使用并不罕见。

例如,OSX 需要在 Objective-C 中编写 UI(可可)代码,而驱动程序使用 C++ 和 C 中的内核扩展。

于 2013-05-16T15:19:17.763 回答
0

我会放弃 JAR 并在那里使用 .Net 类。添加 Java 没有任何好处。

我会将整组 C# 块(语音、映射、驱动程序、包装器)移动到它们自己的进程中,并定义一个 IPC 协议(可能是 TCP/IP 到 localhost)以与 C++ 部分进行通信。我会保留在本机 C++ 中。因此,您拥有一个纯 C++ 进程和一个纯 C# 进程。

作为 IPC 协议设计的一部分,我将隐藏 SMS 和 Speech 块的细节。您应该能够在不引起对方注意的情况下替换实现。

于 2013-05-16T22:16:43.777 回答