2013-08-01 61 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