我正尝试使用C文件创建应用程序。Android - 使用JNI生成的C文件
事实上,C文件是从matlab生成的(约20个文件,其中.c
和.h
),我没有修改这些文件。
要使用这些JNI文件,我创建了一个使用JNI的其他C文件:native-lib.c
。
所以matlab生成的C文件通过native-lib.c
(我用网上找到的tuto来写这个文件)使用。
我有这个架构的C文件:
src/
-- jni/
---- native-lib.c
---- include/
-------- All the c files generated from matlab
这是native-lib.c
(我简化这里):
#include <jni.h>
#include "include/function1.h"
JNIEXPORT jint JNICALL
My_project_function1(JNIEnv* env, jobject obj, Function1_Args args) {
int x = function1(args);
return x;
}
etc...
要构建C库我使用这个文件:CMakeList.txt
:
cmake_minimum_required(VERSION 3.4.1)
add_library(native-lib SHARED src/jni/native-lib.c)
include_directories(src/jni/include)
find_library(log-lib log)
target_link_libraries(native-lib ${log-lib})
但是这个文件CMakeList.txt
不起作用!文件夹include/
中的所有文件都不包含在项目中(只识别native-lib.c
)。
所以我想包括include/
文件夹的文件没有修改它们(没有添加JNIEXPORT
,JNICALL
等)。
我几乎从不使用C,而对C代我一无所知。所以我不知道该怎么做,我不明白大多数在网上找到的答案:(
是否有人明白为什么CMakeList.txt
不起作用?您有解决方案来解决我的问题吗?
谢谢!
是的,我注意到'include_directories'不适用于源路径。所以我想我必须通过'add_library'添加所有的源代码(即使这些文件没有被修改为与JNI一起使用)。 –