2013-08-01 59 views
0

我有超过5个C++/OpenCV项目,我想在一个项目中将它们与一个GUI结合在一起。在C++项目中使用C#GUI

例:当我点击Button1,我得到了project1开始等... 首先,我试过QT,但我有一些与openCV的链接问题,然后我用MFC,我发现它很复杂,因为我不得不重写部分项目。 现在我正在考虑在C++ .dll中使用C#/ WPF GUI,但我仍然有一些问题:

1-这个想法真的有可能吗?

2-如何将现有的C++项目转换为.dll。我应该使用.exe还是.cpp/.h文件?

3 - 是否有任何特定的事情要做,因为我使用OpenCV,我不确定它是否可以使用C#。

4-你有什么好的教程可以帮助我吗?

最后一件事,请告诉我这将是一件简单的事情,因为我花了很长时间编写项目,我认为GUI的步骤应该很简单!

谢谢

+0

你想被包含在一个单一的GUI或一切的一切来运行,能够从一个单一的界面?如果你只需要运行程序,你可以创建一个小程序并使用'Process.Start(example.exe)'。 – DanteTheEgregore

+0

我亲自完成了Zach的建议,这对我的目的来说足够好。不利之处在于,每次更改(对创建.exe的项目)以及5个可能非常麻烦的.exes时,您都必须重新部署.exe。我会在你的5个C++项目上建议makefile magic,它会自动编译项目并将.exes放在你想要的地方。 – Shaz

+0

没有注意到你的编辑。一秒钟,我会改变我的答案,以更好地适应这个问题。 – DanteTheEgregore

回答

1

有这取决于你想要做什么了几个很好的方法。如果您有多个项目,最简单的方法是创建一个小程序并致电Process.Start(example.exe)。 Process.Start()只是以该扩展定义的默认方式打开文件。当然,这实际上不会集成到一个GUI中,但基本上没有任何开销。

您的其他选择是将所有内容编译到类库中,并将C#应用程序中的引用添加到生成的.dll文件中。很容易就可以调用.dll文件,而无需进一步实施。

将特定项目编译到类库中的过程很难说,因为它取决于您可以挽救什么以及需要在C#应用程序中重新实现哪些内容。绝对最简单的方法是放弃GUI,只关心此时的代码。在那里,您可以使用WPF重新实现GUI本身。

编译为.dll文件相对简单,一旦.dll文件被编译并且引用被添加到C#应用程序中调用.dll文件的方法就像在应用程序本身中调用类一样简单。我会注意到,如果你想访问它们,那么方法将需要public关键字,但是如果它们已经在工作应用程序中实现,我想它们很可能会被使用。

在VS11生成类库一个伟大的教程可以在这里找到: http://msdn.microsoft.com/en-us/library/vstudio/ms235636.aspx