2013-08-01 2 views
0

У меня есть более 5 проектов C++/OpenCV, и я хочу объединить их в один проект с одним графическим интерфейсом.с использованием C# GUI с проектами на C++

Пример: Когда я нажимаю Button1, я запускаю проект1 и т. Д. ... Сначала я пробовал QT, но у меня были проблемы с связью с openCV, затем я использовал MFC, и я нашел это сложным, потому что мне нужно переписать части проектов. Теперь я думаю об использовании графического интерфейса C#/WPF с C++ .dll, но у меня все еще есть некоторые вопросы:

1- Действительно ли эта идея возможна?

2- Как преобразовать существующий проект на C++ в DLL. Должен ли я использовать файлы .exe или .cpp/.h?

3 - Есть ли какие-то конкретные вещи, потому что я использую OpenCV, и я не уверен, что он может работать с C#.

4- У вас есть хороший учебник, который мог бы мне помочь?

Наконец-то, пожалуйста, скажите мне, что это будет простая задача, потому что я долгое время занимался кодированием проектов, и я думал, что шаг GUI должен быть легким!

Спасибо

+0

Хочет, чтобы все было содержаться в одном графическом интерфейсе или все в обкатке состояния из единого графического интерфейса? Если вам просто нужно запускать программы, вы всегда можете создать небольшую программу и использовать 'Process.Start (example.exe)'. – DanteTheEgregore

+0

Я лично сделал то, что предлагает Зак, и это было достаточно для моих целей. Недостатком является то, что вам нужно повторно развернуть .exe каждый раз, когда происходит изменение (в проект, который сделал файл .exe), и с 5.exe, которые могут быть громоздкими. Я бы предложил makefile magic на ваших 5 проектах на C++, которые будут автоматически компилировать проекты и размещать .exe там, где вы хотите. – Shaz

+0

Не заметил ваших прав. Одна секунда, и я изменю свой ответ, чтобы лучше подойти к вопросу. – DanteTheEgregore

ответ

1

Есть несколько хороших методов в зависимости от того, что вы хотите сделать. Самое простое, если у вас несколько проектов, - создать небольшую программу и позвонить по номеру Process.Start(example.exe). Process.Start() только что открывает файл, который по умолчанию используется для этого расширения. Конечно, это фактически не будет интегрировано в один графический интерфейс, но на самом деле нет никаких накладных расходов.

Другой вариант - собрать все в библиотеки классов и добавить ссылки в приложение C# в результирующие файлы .dll. Тогда легко выполнить вызовы в файл .dll без дополнительных затрат на дальнейшую реализацию.

Что нужно сделать, чтобы скомпилировать ваши конкретные проекты в библиотеках классов, довольно сложно сказать, поскольку оно варьируется в зависимости от того, что вы можете спасти, и что нужно будет внедрить в приложение C#. Абсолютным самым простым подходом было бы отказаться от графического интерфейса пользователя и только беспокоиться о коде на данном этапе. В прошлом вы можете повторно реализовать сам GUI, используя WPF.

Компиляция в .dll-файле относительно проста и скомпилированы файлы .dll и добавлена ​​ссылка на методы вызова приложений C# из .dll-файла так же просто, как вызов из класса в самом приложении. Я буду замечать, что для этого потребуются ключевые слова public, если вы хотите получить к ним доступ, но я бы предположил, что они, скорее всего, сделают это, если они уже реализованы в рабочем приложении.

Отличный учебник по генерации библиотек классов в VS11 можно найти здесь: http://msdn.microsoft.com/en-us/library/vstudio/ms235636.aspx

Смежные вопросы