C JNI помогите со сложным кодом - PullRequest
0 голосов
/ 09 февраля 2011

dev env: Ubuntu 10.10 (32-разрядная версия), Eclipse, OpenJDK

В настоящее время у меня есть код для исполняемого файла, написанного на C. Мне нужно изменить его, чтобы преобразовать в библиотеку .so и получить доступ к его функциям из кода Java.

В настоящее время код C содержит 3 заголовка и 3 исходных файла (.c). Мне нужно вызвать только основную функцию и передать ей две строки из Java. Все остальные функции вызываются из main (). к сожалению, одна из других функций выводит результаты в командную строку. Как реализовать JNI, чтобы передать две строки и вернуть этот конкретный результат?

Я нашел примеры в Интернете, но нашел их слишком упрощенными. Также я не могу найти заголовок jni.h для использования.

Буду ли я использовать JNIEXPORT int JNICALL Java_ppldtct_main(JNIEnv*,jobject,jstring,jstring) вместо int main(int argc,char** argv) в C?

Вся помощь очень ценится.

Спасибо

Ответы [ 2 ]

0 голосов
/ 09 февраля 2011

Вы также можете перезвонить на свой Java-код из собственного кода C.

Вы можете найти Java-метод, вызвав функцию GetMethodID (), предоставленную JNI, и вызвать такую ​​функцию, например, через. CallVoidMethod (), в зависимости от типа возвращаемого значения.

Java-строки могут быть созданы в C с помощью NewString () из NewStringUTF ().

0 голосов
/ 09 февраля 2011

Если я правильно вас понимаю, вы пытаетесь внести минимальные изменения в существующий код.

В этом случае вы можете попробовать переписать дескриптор файла 1 (стандартный вывод) с помощью канала и получитьвывод программы таким образом.

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