Подходы к графическому интерфейсу для большой C-программы - PullRequest
4 голосов
/ 07 августа 2009

В нашей лаборатории биоинформатики нас недавно попросили создать графический интерфейс для программы, написанной (и оптимизированной) на языке C. Любой разработанный нами графический интерфейс должен иметь возможность передавать входные данные и получать выходные данные из программы на C, в то время как также легко переносится как на Windows, так и на Mac. Как можно это сделать?

Ответы [ 7 ]

3 голосов
/ 07 августа 2009

Скачать QT или wxWidgets .

Почему тяжелая работа, когда кто-то уже есть и позволит вам использовать его бесплатно? Я предпочитаю QT сам, кстати.

Редактировать: это означает использование C ++, но оно будет прекрасно работать с кодом C.

3 голосов
/ 07 августа 2009

Если вы ищете инструментарий GUI, который работает на Windows / Mac в C, вы рассмотрели GTK ?

2 голосов
/ 07 августа 2009

Используйте отдельную программу.

Это не нарушает существующий код - особенно важно, если в коде есть биологические знания, которые программист может не знать / понимать / тестировать.

Изменение графического интерфейса часто, через пару лет вы будете переписывать графический интерфейс для NewSuperOsToolkit (tm), но основной рабочий код не изменится. У нас есть код моделирования атмосферы, который, я уверен, был изначально написан на латинице.

У вас есть возможность запускать код движка как пакет, параллельно с MPI в облаке, и кучу других способов, о которых вы даже не думали.

1 голос
/ 07 августа 2009

Вы могли бы написать интерфейсные интерфейсы на Java, и они могли бы вводить и получать выходные данные от ваших программ на Си. Здесь я знаю несколько групп, которые делают нечто похожее с кодом на C # и C (но они не имеют многоплатформенного ограничения).

Таким образом, вам не обязательно создавать свой графический интерфейс с использованием инструментария C.

0 голосов
/ 07 августа 2009

Если вам нужен собственный графический интерфейс, тогда используйте wxWidgets или QT. (Я использую wxWidgets ...)

Альтернатива - использовать интерфейс на основе HTML с использованием Javascript и CSS. Вы вообще избегаете библиотек GUI, получаете кроссплатформенную поддержку, и в одних измерениях результат лучше, в других - хуже.

Если вам действительно нужен автономный пользовательский интерфейс, вы можете интегрировать его в двоичный файл с чем-то вроде WebKit.

0 голосов
/ 07 августа 2009

Существует множество сценариев с языками, которые могут упростить это. Я бы выбрал tcl / tk, он работает на Mac в значительной степени из коробки и является кроссплатформенным на любой машине, о которой вы только можете подумать.

Также GTK великолепен, и у многих языков сценариев есть привязки для него.

Вы, вероятно, не хотите писать свой графический интерфейс на c, если вам не нужно. используйте язык сценариев быстрого развития.

0 голосов
/ 07 августа 2009

В зависимости от характера программы, вы можете создать совершенно отдельное приложение с графическим интерфейсом (на любом языке, который вы предпочитаете), и запустить / выполнить существующую программу из него, перенаправив ее stdin и stdout в вашу программу с графическим интерфейсом. В зависимости от того, как работает существующая программа, это может работать хорошо или быть очень громоздким.

Вы также можете расширить существующую программу с помощью кода GUI в нечто вроде GTK (который имеет C API), или вы можете использовать Qt (который является C ++, но обычно нет проблем с вызовом функций C из C ++, если вы определяете их как 'extern "C"').

...