2008-10-17 1 views
5

Мне нужно сделать проект колледжа с использованием C++, для которого требуется графический интерфейс. Я хочу использовать Perl/Tk для графического интерфейса, но я не уверен, как связать C++ с Perl. Проект требует возможности передавать переменные взад и вперед. Мог ли кто-нибудь указать мне в сторону некоторых хороших учебников/книг для связывания этих двух или любых идей о том, как я должен подходить к проблеме, поскольку мне никогда не приходилось связывать два языка раньше.Perl/Tk GUI для C++-приложения

ответ

6

Я working на library, чтобы сделать это как можно проще, но это все еще альфа-версия.

6

Вы также можете попробовать swig. Это инструмент для создания интерфейсов для нескольких языков сценариев из C/C++.

5

Поскольку Perl будет предоставлять графический интерфейс, я бы вложил код C++ в Perl. Предполагая, что будет значительная часть кода на C++, я бы поместил это в библиотеку. Традиционным способом связывания этой библиотеки с Perl является создание модуля Perl с использованием XS. Tutorial for writing XSUBs и XS language reference manual помогут с этим.

Возможно, несколько проще использовать модуль Inline. Раньше я использовал Inline::C, и он работал хорошо, но я никогда не пробовал Inline::CPP (версия на C++). Я вижу, что он имеет mixed reviews.

+0

Последующие годы спустя. Inline :: CPP не поддерживался с 2003 года. В 2011 году я начал работать над ним в качестве сопроводителя и совершил около 135 исправлений в период с ноября по май 2012 года. Сейчас он намного лучше. Список ошибок RT относится к одному затянутому элементу списка желаний. И CPAN Testers устанавливают коэффициент успеха до середины 90% диапазона. – DavidO 2012-07-24 00:16:16

0

Если это небольшой проект, его, вероятно, не стоит инвестиций, чтобы потратить много времени на разговоры двух языков. вы можете рассмотреть возможность использования более подходящего инструмента. C# будет разговаривать с C++ с гораздо меньшей болью.

1

Если бы я решал эту проблему, я бы использовал TCL/TK для создания графического интерфейса, а затем построил расширение TCL в C/C++, которое можно вызвать из TCL/TK. Это одна из тех вещей, в которой TCL/TK действительно хорош (другие динамические языки могут это делать, но мне нравится TCL/TK). Вы создаете общий libray (.so на Unix или .dll в Windows) с битами C++, и они импортируются как команды в TCL при загрузке библиотеки.

Swig, который уже упоминался, является инструментом, который помогает автоматизировать процесс обертывания, он может взять ваш код на C++ и создать оболочку, которая позволяет загружать ее на такие языки, как TCL, Perl, Python, Ruby ...

Начать с http://www.tcl.tk/ для получения подробной информации о TCL и TK.