Hi everybody, I'm trying to call a OCaml function from C code. This is the OCaml file: open Printf let hello () = Printf.fprintf stdout "%s" "test" let () = let oc = open_out "/tmp/testfile" in Printf.fprintf oc "test"; close_out oc; Printf.fprintf stdout "Caml main function\n"; Callback.register "Hello callback" hello; Printf.fprintf stdout "%s" "Finished with OCaml initialization" ;; and this is the C file: #include #include #include #include void helloWrapper() { static value *closure_f = NULL; if(closure_f == NULL) { printf("1\n"); closure_f = caml_named_value("Hello callback"); printf("2\n"); printf("Closure pointer: %p\n", closure_f); } printf("3\n"); caml_callback(*closure_f, Val_unit); } int main(int argc, char **argv) { caml_main(argv); printf("calling wrapper\n"); helloWrapper(); printf("Done."); return 0; } Everything seems to work: The file "/tmp/testfile" is created correctly (so the OCaml function did get called), and the C program ends with "Done.", *but* nothing is printed from the OCaml fprintf functions. I am linking the executable with $(OCAMLOPT) -output-obj test.ml -o test_obj.o $(CC) -c linkwiththis.c -o linkwiththis.o -I"`$(OCAMLC) -where`" $(CC) linkwiththis.o test_obj.o $(NATIVECCLIBS) -lasmrun -o camltestprogram -L"`$(OCAMLC) -where`" What am I doing wrong - how can I make OCaml print to stdout correctly? Best regards, Andreas