【发布时间】:2017-06-22 16:06:38
【问题描述】:
我正在尝试使用 C 文件创建应用程序。
实际上,C 文件是从 matlab 生成的(大约 20 个文件,有 .c 和 .h),我没有修改这些文件。
为了将这些文件与 JNI 一起使用,我创建了另一个使用 JNI 的 C 文件:native-lib.c。
所以通过native-lib.c使用matlab生成的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 不起作用吗?你有办法解决我的问题吗?
谢谢!
【问题讨论】:
标签: android c cmake java-native-interface