Вызов чистой функции C из метода JNI - PullRequest
0 голосов
/ 12 сентября 2011

Я работаю над примером JNi.У меня есть файл C:

#include "test_lib.h"
#include <mobile_crypto.h>
#include <stdio.h>
int mainCrypto(void){
.
.
.
.
return 1 ;
}

Теперь я хочу получить доступ к методу mainCrypto () из другого файла C, где написаны мои методы JNI:

#include "com_My_NativeLib.h"
#include "test_lib.h"
#include <stdio.h>
#include <jni.h>
JNIEXPORT jint JNICALL Java_com_My_NativeLib_crypt(JNIEnv * env, jobject obj){


    int status = 0; 
    status = mainCrypto();

    return status;
}

Я хочу знать,я могу вызвать чистую функцию C mainCrypto () из другого файла C, как я делаю в этом примере.Я не получаю никакого возвращаемого значения, и поэтому значение переменной состояния не обновляется.

Заранее спасибо.

Некоторые ошибки, которые я получаю: DEBUG / NDK_NativeLib (3640): [09-12 15: 58: 40.766 3640: 0xe38 F // system / bin / app_process] DEBUG / NDK_NativeLib (3640): обнаружено повреждение стека: прервано DEBUG / Zygote (33): процесс 3640 завершен по сигналу (6) INFO / ActivityManager(41): процесс com.crypto (pid 3640) умер.

Ответы [ 2 ]

1 голос
/ 12 сентября 2011

создайте h-файл, например, maincrypto.h с последующим текстом

int mainCrypto (void);

в вашем cpp-файле с Java_com_My_NativeLib_crypt добавьте #include "maincrypto.h" и это все

1 голос
/ 12 сентября 2011

Почему вы думаете, что вы не сможете вызвать mainCrypto() из какой-либо другой функции C? Кажется довольно очевидным, что нет никаких причин, почему вы не можете, однако я не думаю, что вы бы задали вопрос, если у вас не было причины думать, что вы не можете. Если исключить какие-то странные детали, которые вы пропускаете, да, вы можете звонить и из других мест.

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