#c #user-interface
#c #пользовательский интерфейс #c
Вопрос:
Я начинаю новый небольшой проект, в котором отсутствует графический интерфейс и немного манипулирования данными, но сложные и требующие критики по времени части кода существуют и написаны на c / c . Ранее я использовал win32 api, MFC для создания графики, но я хочу что-то более современное, более новое и что-то, что немного проще в обслуживании и обновлении. Вероятно, мне следует упомянуть, что я также хочу попробовать и узнать что-то новое…
Несколько лет назад я попытался интегрировать компоненты c в c # с помощью pinvoke. Получилось довольно сумбурно. Но это было давно…
Какие-нибудь советы? Что я должен использовать?
Предварительные требования: Windows (XP или 7) и VS 2005, 2008 или 2010. Eclipse также должен работать нормально.
Ответ №1:
Вы могли бы попробовать QT или wxWidgets, которые оба являются хорошими наборами инструментов для C GUI. Если у вас не так много точек входа в коде c , вы могли бы обернуть их в несколько классов C # и использовать WPF или windows form (.NET 4 или 2). В любом случае для этого требуется «смешивать управляемый и неуправляемый код».
Комментарии:
1. да, и qt, и wxWidgets имеют открытый исходный код. я предлагаю вам QT: у него лицензия LGPL, и он действительно красивый и кроссплатформенный
2. Для C # вам нужна Windows, но помимо этого. NET и Visual Studio Express бесплатны.
3. Бюджет рассчитан на дополнительное программное обеспечение. У меня уже есть версии 2005, 2008 и 2010.
4. Этот ответ содержит основные варианты. Если вы уже разрабатываете в Visual Studio, C # может быть хорошим вариантом. Я часто использую Interop с неуправляемой c / c dll, когда мне нужно, и сохраняю остальное в C #. Это работает действительно хорошо, и разработка идет быстро, по крайней мере, для меня.
Ответ №2:
Сам давно не пробовал, но, насколько я слышал, интеграция .NET с managed / native в наши дни довольно хороша:
- не требует дополнительных доработок или зависимостей; когда проект находится в Visual Studio, вы готовы к запуску,
- довольно простое кодирование графического интерфейса,
- простой в обслуживании,
- любой язык на ваш выбор для графического интерфейса: C #, F #, J #, управляемый C и другие (пригодится, когда вы захотите попробовать что-то новое).
Ответ №3:
Я бы рекомендовал интеграцию между C # и C с использованием C / CLI, иначе управляемого C . Основным проектом является C / CLI, использующий классы C # для визуального оформления графического интерфейса. Не требуется никакого pinvoke. Весь код (графический интерфейс и часть библиотеки) может даже содержаться в одном исполняемом файле (но зависит от наличия .Net).
Если бюджет не был препятствием (в данном случае около 150 $) Я бы также упомянул C Builder — визуальный дизайн графического интерфейса и собственный исполняемый файл (no.Сетевая зависимость)
Комментарии:
1. Какова производительность управляемого c / CLI по сравнению со стандартным c ? Медленно? то же самое?
2. При использовании неуправляемого подмножества C , оно такое же, как стандартное C , вызов управляемой части может повлечь за собой некоторый штраф, но это не должно быть заметно в случае GUI.
3. Как вы соединяете c # с c ? Я не могу найти никакого способа, кроме использования DllImport и тому подобного. Становится очень медленным…
4. Создайте новый проект как один из Visual C / CLR group. После этого вы можете добавлять ссылки на библиотеки DLL с кодом C # обычным способом. Intellisense будет знать синтаксические оболочки C вокруг импортированных классов C #. Аналогичным образом вы можете добавить ссылки на библиотеки классов C / CLR в проекте C #.
Ответ №4:
Вы пишете графический интерфейс с использованием QT и ссылаетесь на существующий код C .