From mboxrd@z Thu Jan 1 00:00:00 1970 Received: (from majordomo@localhost) by pauillac.inria.fr (8.7.6/8.7.3) id VAA30031; Thu, 19 Jun 2003 21:58:21 +0200 (MET DST) X-Authentication-Warning: pauillac.inria.fr: majordomo set sender to owner-caml-list@pauillac.inria.fr using -f Received: from nez-perce.inria.fr (nez-perce.inria.fr [192.93.2.78]) by pauillac.inria.fr (8.7.6/8.7.3) with ESMTP id VAA30069 for ; Thu, 19 Jun 2003 21:58:19 +0200 (MET DST) Received: from hotmail.com (bay1-f18.bay1.hotmail.com [65.54.245.18]) by nez-perce.inria.fr (8.11.1/8.11.1) with ESMTP id h5JJwIT01883 for ; Thu, 19 Jun 2003 21:58:18 +0200 (MET DST) Received: from mail pickup service by hotmail.com with Microsoft SMTPSVC; Thu, 19 Jun 2003 12:58:17 -0700 Received: from 128.2.130.97 by by1fd.bay1.hotmail.msn.com with HTTP; Thu, 19 Jun 2003 19:58:16 GMT X-Originating-IP: [128.2.130.97] X-Originating-Email: [unosoft@hotmail.com] From: "Jung Woon Ho" To: caml-list@inria.fr Cc: unosoft@hotmail.com Subject: [Caml-list] Interfacing C and Ocaml Date: Thu, 19 Jun 2003 19:58:16 +0000 Mime-Version: 1.0 Content-Type: text/plain; format=flowed Message-ID: X-OriginalArrivalTime: 19 Jun 2003 19:58:17.0541 (UTC) FILETIME=[20411F50:01C3369D] X-Spam: no; 0.00; jung:99 interfacing:01 ocamlc:01 -output-obj:01 usr:01 libcamlrun:01 -lcurses:01 printf:01 sprintf:01 callback:01 wrappers:01 stdio:01 mlvalues:01 val:01 char:01 Sender: owner-caml-list@pauillac.inria.fr Precedence: bulk Hi, Im trying to implement a simple program that interfaces C and Ocaml. Here is what I do: ocamlc -custom -output-obj -o modcaml.o mod.ml ocamlc -c modwrap.c cp /usr/local/lib/ocaml/libcamlrun.a mod.a ar r mod.a modcaml.o modwrap.o cc -o prog main.c mod.a -lcurses and I get the error: /usr/lib/gcc-lib/i486-suse-linux/3.2/../../../../i486-suse-linux/bin/ld: cannot find -lcurses collect2: ld returned 1 exit status I tried cc -o prog main.c mod.a -lcurses -ltermcap and cc -o prog main.c mod.a -ltermcap but i cant get the program to link. Does anybody know how to solve this problem? Thank you very much. ---------------------mod.ml------------------------------- (* File mod.ml -- some ``useful'' Caml functions *) let rec fib n = if n < 2 then 1 else fib(n-1) + fib(n-2) let format_result n = Printf.sprintf "Result is: %d\n" n (* Export those two functions to C *) let _ = Callback.register "fib" fib let _ = Callback.register "format_result" format_result ---------------------------------------------------------- --------------------modwrap.c----------------------------- /* File modwrap.c -- wrappers around the Caml functions */ #include #include #include #include int fib(int n) { static value * fib_closure = NULL; if (fib_closure == NULL) fib_closure = caml_named_value("fib"); return Int_val(callback(*fib_closure, Val_int(n))); } char * format_result(int n) { static value * format_result_closure = NULL; if (format_result_closure == NULL) format_result_closure = caml_named_value("format_result"); return strdup(String_val(callback(*format_result_closure, Val_int(n)))); /* We copy the C string returned by String_val to the C heap so that it remains valid after garbage collection. */ } ---------------------------------------------------------- -------------------main.c--------------------------------- /* File main.c -- a sample client for the Caml functions */ #include int main(int argc, char ** argv) { int result; /* Initialize Caml code */ caml_startup(argv); /* Do some computation */ result = fib(10); printf("fib(10) = %s\n", format_result(result)); return 0; } ---------------------------------------------------------- _________________________________________________________________ Help STOP SPAM with the new MSN 8 and get 2 months FREE* http://join.msn.com/?page=features/junkmail ------------------- To unsubscribe, mail caml-list-request@inria.fr Archives: http://caml.inria.fr Bug reports: http://caml.inria.fr/bin/caml-bugs FAQ: http://caml.inria.fr/FAQ/ Beginner's list: http://groups.yahoo.com/group/ocaml_beginners