Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/15: Рейтинг темы: голосов - 15, средняя оценка - 4.60
 Аватар для Merlin
0 / 0 / 0
Регистрация: 04.12.2014
Сообщений: 10

Как запустить из java c++ метод?

23.06.2015, 12:01. Показов 3278. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Уважаемые форумчане!

Недавно столкнулся с проблемой запуска c++ метода из-под java, прочитав в инете не один десяток статей, понял, что лучшим выходом из моей ситуации есть библиотека jni(возможно я ошибаюсь). Но сам я разобраться не могу, а туториалы уж слишком заумные для начинающего программиста.

Что я хочу:
1. Посоветуйте подходящую библиотеку для реализации моего вопроса.
2. Помогите в ней разобраться.

Спасибо за все ответы!))
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
23.06.2015, 12:01
Ответы с готовыми решениями:

Как запустить Java метод из JavaScript используя Spring Boot
Всем, привет! Возник очередной вопрос по спрингу, а именно как из JS функции вызвать метод Java. А теперь грязные подробности. Есть к...

Как запустить Java?
подскажыте, пожалуста, кто знает, как запустить Java??? А то скачал, установил, и в файлах установки не могу найти того, как запустить сам...

Как запустить метод?
Господа имеется такой простенький код. Не пойму почему метод не запускается и как его запусить вообще не меняя остального кода. Спасибо ...

5
Эксперт Java
 Аватар для KEKCoGEN
2399 / 2224 / 565
Регистрация: 28.12.2010
Сообщений: 8,672
23.06.2015, 12:58
Merlin, запуск кода плюсов из джава сам по себе не для начинающего программиста.
0
 Аватар для Merlin
0 / 0 / 0
Регистрация: 04.12.2014
Сообщений: 10
23.06.2015, 13:10  [ТС]
Не, ну я не совсем начинающий , уже год узучаю яву , но опыта пока малова-то.
0
Эксперт Java
 Аватар для KEKCoGEN
2399 / 2224 / 565
Регистрация: 28.12.2010
Сообщений: 8,672
23.06.2015, 13:31
Merlin, ну тогда читайте про jni
0
510 / 272 / 60
Регистрация: 14.12.2010
Сообщений: 548
26.06.2015, 12:41
Цитата Сообщение от Merlin Посмотреть сообщение
2. Помогите в ней разобраться.
Как уже посоветовали, надо почитать про JNI.
Для Android'а пример.
Для других систем будет отличаться системой сборки C++ библиотеки.
0
12 / 12 / 4
Регистрация: 04.08.2010
Сообщений: 80
29.06.2015, 17:07
Merlin, первым делом нужно определить класс, который будет предоставлять доступ к нативным методам. Например, такой:
Java
1
2
3
4
5
6
7
8
9
10
11
package my.pack;
 
public class NativeClass {
 
    static {
       System.loadLibrary("nativelib");
    }
 
    native public static void methodOne();
    native public static void methodTwo();
}
Тут производится определение нативным методов(помечены native), реализация которые будут находится во внешней библиотеке и статическая загрузка этой библиотеки с исполняемыми методами( на данном этапе ее может не существовать).

2. Далее необходимо написать СИшный заголовочный файл в ручную или сгенерировать его с помощью утилит
javac, javah:

Bash
1
2
3
javac -d bin/ src/my/pack/NativeClass.java         # компилируем исходник и кладем его в bin, тут если не путаю, важно выполнять эти команды именно из корня проекта.
cd bin
javah my.mega.pack.NativeClass               # генерируем заголовочник по скомпилированному файлу
3. Реализуем методы объявленные в заголовочном файле, например как то так:
C++
1
2
3
4
5
6
7
8
  
JNIEXPORT void JNICALL Java_my_pack_NativeClass_methodOne(JNIEnv *env, jclass myclass) {
    std::cout << "One" << std::endl;
}
 
JNIEXPORT void JNICALL Java_my_pack_NativeClass_methodTwo(JNIEnv *env, jclass myclass) {
    std::cout << "Two" << std::endl;
}
4. Компилируем и собираем все это безобразие.
Тут особо не подскажу, так как все зависит от компилятора и операционной системы.Например для gcc под Windows примерно так:
Bash
1
gcc -Wl,--add-stdcall-alias -I"%JAVA_HOME%\include" -I"%JAVA_HOME%\include\win32" -shared -o nativelib.dll NativeClass.c
пол Linux примерно так:
Bash
1
gcc -I"$JAVA_HOME\include"  -o libnativelib.so -shared NativeClass.c
5. Кладем собранную библиотеку в проект, при необходимости указываем путь до библиотеки через java property -Djava.library.path="путь"

6. Собираем проект и должно работать.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
29.06.2015, 17:07
Помогаю со студенческими работами здесь

Как запустить файл из java
Как запустить файл из java

Как запустить Java EE проект?
Всем привет. Я К Джаве отношусь очень косвенно, тоесть когда то там что-то на лекциях слышал. Но жизнь заставила запустить у себя на компе...

Как запустить компилятор java
jdk установлен ,путь в Path прописан как запустить компилятор java? скачал eclipse ,запускаю файл eclipse.exe вылазит окно в котором...

Как запустить Java-aпплет?
Люди! Подскажите, пожалуйста, как запустить Java-aпплет. Я создал файл с расширением java и скомпилировал его под Linuxom. Получил файл с...

Как запустить программу на Java?
Подскажите новичку Как запускать готовую программу на Java? Сделана в IDE NetBeans, из среды работает, а как перенести на другой...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru