API на C ++ soft - PullRequest
       40

API на C ++ soft

2 голосов
/ 24 января 2012

Я хотел бы знать, как получить переменные программы, работающей на C ++, из моего Java-приложения.Я думаю, что я должен сделать API, но я не знаю, как начать это.На самом деле, я хочу получить информацию о пакетах в программном телефоне Ekiga.Я локализовал то, что я хочу, в Ekiga's main.cpp:

double lost = mw->priv->current_call->get_lost_packets();
double late = mw->priv->current_call->get_late_packets();
double out_of_order = mw->priv->current_call->get_out_of_order_packets();

Ответы [ 3 ]

2 голосов
/ 24 января 2012

Я думаю, что вам нужно JNI: http://en.wikipedia.org/wiki/Java_Native_Interface

Вы должны создать dll, который будет иметь методы, которые возвращают эти значения, и иметь класс java с нативными методами, которые будут использовать эту dll.

1 голос
/ 24 января 2012

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

  • Добавьте сокет для прослушивания соединений в программе ekiga и подключите вашу Java-программу к этому сокету с помощью клиентских сокетов. Таким образом, вы можете отправлять информацию в подключенную Java-программу, когда эти значения не изменятся.

  • Запустите Java-программу в ekiga или сделайте так, чтобы ваша java-программа запускала ekiga как вызов нативного метода. Обе они включают jni и приводят к тому, что обе части (программа ekiga и java) выполняются как один процесс.

Первый способ проще и менее подвержен ошибкам, однако вам необходимы некоторые базовые знания о сетевом программировании как на Java, так и на C ++.

1 голос
/ 24 января 2012

Звучит так, как будто вы хотите реализовать слой моста, используя такие технологии, как JNI или JNA . Вторым вариантом будет написание Web-сервиса или Передача сообщений слоя между двумя языками. Я бы избежал CORBA для такой простой задачи (на самом деле, я бы избежал периода CORBA хехехе). Либо так, либо C ++ записывает данные в базу данных, файл и т. Д. И пишет код Java для его чтения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...