2015-01-20 5 views
3

Это может быть немного странный вопрос, но я хотел бы знать, можете ли вы использовать Java внутри C++ 14. Мне все равно не нравится GTK (я нахожу это запутанным и сложным). Swing, однако, очень прост в использовании, и вы можете быстро получить рабочий проект. Поэтому я хотел бы знать, можете ли вы использовать Java Swing внутри C++, поэтому я могу использовать Swing как передний план, как в том, что вы видите как графику, и использовать C++ для фона, как в материалах, которые вы не видите, например вычисления и объекты и вещи. Поэтому, если у меня есть код C++, скажите Swing, что посмотреть или когда обновить, это будет очень полезно для проекта, который я имею в виду. Заранее благодарим за любой совет, который я могу получить.Можете ли вы использовать Java Swing в C++

EDIT: Возможность использования C++ 14 внутри Java также приемлема. Кроме того, если бы кто-нибудь мог получить код примера, это было бы очень полезно. Благодаря!

+0

Вы можете позвонить C++ код из Java , Может быть, это поможет. –

+5

Смешивание двух миров возможно с помощью JNI (или JNA), чтобы пересечь промежуток, но не для новичка. Вы можете посмотреть http://docs.oracle.com/javase/7/docs/technotes/guides/jni/, чтобы узнать, хотите ли вы пойти дальше по этой дороге. –

+3

Я предполагаю, что у вас может быть какой-то «сервер», написанный на C++, и ответ на запросы от какого-то «клиента» Java/Swing. Существует несколько различных протоколов, которые вы могли бы использовать для реализации этого. Все они сложны. Почему бы вам просто не написать свое приложение полностью на Java? –

ответ

3

Вы не должны запускать Java из C++, а скорее C++ из Java. Oracle предоставляет вам способ загрузки собственных разделяемых библиотек с использованием JNI.

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

Это говорит о том, что использование JNI довольно сложно, и улучшения скорости C++ могут не стоить; поэтому вы должны использовать только Java (или только C++ и библиотеку для создания своего графического интерфейса, например Qt)

0

В каком направлении вы идете, это вопрос вкуса (загрузка JVM из программы на C++ или загрузка DLL из Сторона JVM).

Обычно вы идете по пути, который более логичен, например. если у вас уже есть программа на C++, вы, вероятно, захотите загрузить JVM со стороны C++. Это будет ваше дело. Особенно, если Java, который вы хотите добавить, по сути, «скриптирует» приложение C++.

Если у вас уже есть программа Java и вы хотите получить доступ к C++ DLL, вы загружаете DLL из Java и пишите простой JNI/родной Java-класс.

В наше время вы должны использовать такие инструменты, как юна для этого (вместо JNI): https://github.com/java-native-access/jna

Или вы можете использовать SWIG для создания оберток для вашего C++ классов: http://www.swig.org/

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