我是ocaml的新手,我正在尝试使用ocaml和android ndk,但我无法弄清楚链接是如何工作的。我已经有了自己的工作,甚至haskell(使用ghc-android)
这是我的c文件,它将调用ocaml代码。现在我只是在运行ndk-build
时尝试编译它jni.c
#include <jni.h>
#include <caml/callback.h>
JNIEXPORT jint JNICALL JNI_OnLoad( JavaVM *vm, void *pvt ) {
static char *argv[] = {"hello.so", 0 }, **argv_ = argv;
caml_startup(&argv);
return JNI_VERSION_1_2
}
hello.ml 让ocaml_foo = 1.0
let () =
Callback.register "ocaml_foo" ocaml_foo
Android.mk
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := ocaml
LOCAL_SRC_FILES := ocaml/hello.so
include $(CLEAR_VARS)
LOCAL_MODULE := jni
LOCAL_SRC_FILES := jni.c
LOCAL_SHARED_LIBRARIES := ocaml
LOCAL_EXPORT_C_INCLUDES := /usr/lib/ocaml
include $(BUILD_SHARED_LIBRARY)
错误是
fatal error: caml/callback.h: No such file or directory
我试图按照opam-android的说明操作,但它没有完整的示例。我没有看到如何使用ndk
来构建ocaml共享对象我是否必须使用ocamlopt的ndk代码编译ocaml代码?如果是这样的话?