2012-05-04 1 views
0

У меня есть код C (testFile .c), который я хочу использовать в приложении Android, используя JNI. Этот код содержит чистый код C, и он имеет много методов внутри. Более того, он также вызывает некоторые заголовочные файлы C (file1 .h, file2 .h).Как преобразовать код C в код JNI

Например: TestFile .c

#include "file1.h" 
#include "file2.h" 

void myMethod1() 
{ 
    ... 
    ... 
} 
void myMethod2() 
{ 
    ... 
    ... 
} 
void myMethod3() 
{ 
    ... 
    ... 
} 

Имею ли я превратить все TestFile .c для JNI кода, или просто преобразовать некоторые методы, которые я использовал позже (не все их)? Должен ли я также преобразовать код c внутри файла заголовка (file1.h и file2.h), или просто преобразовать c-код в testFile.c?

ответ

1

Самый простой способ сделать это - определить ваш интерфейс JNI Java и использовать автоматическую генерацию c-заглушек c, javah, для генерации c-файла. В этом c-файле выполните вызовы фактических методов c method1(), method2() и method3().

http://docs.oracle.com/javase/1.4.2/docs/tooldocs/windows/javah.html

+1

Благодарим вас за ответ. Но, Извините, вопрос в том, должен ли я также преобразовать c-код в заголовочный файл (file1.h и file2.h), или просто преобразовать c-код в testFile.c? –

+1

http://marakana.com/forums/android/examples/49.html –

3

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

+0

Благодарим вас за ответ. Но, извините, мой вопрос в том, должен ли я также преобразовать c-код в заголовочный файл (file1.h и file2.h), или просто преобразовать c-код в testFile.c? –

+0

Как и в случае с кодом C, это зависит от того, требуется ли адаптация для совместимости с средой сборки ndk, средой исполнения Android, воздействием жизненного цикла действия на время жизни процесса и т. Д. Это слишком широкий вопрос для конкретного ответа. Попробуйте что-то и опубликуйте новый вопрос с конкретной проблемой, если вы столкнетесь с одним (но прочитайте и поймите документы жизненного цикла деятельности, чтобы избежать случайных ошибок) –

+0

Хорошо, большое вам спасибо. –