From: Guillaume Yziquel <guillaume.yziquel@citycable.ch>
To: rouanvd@softwarerealisations.com
Cc: caml-list@yquem.inria.fr
Subject: Re: [Caml-list] problem creating .cma library
Date: Thu, 31 Dec 2009 00:30:16 +0100 [thread overview]
Message-ID: <4B3BE288.4030701@citycable.ch> (raw)
In-Reply-To: <56670.41.177.16.252.1262195331.squirrel@41.177.16.252>
rouanvd@softwarerealisations.com a écrit :
> Hi everyone.
Hi.
> I am using ocaml 3.11.0 with the MingW toolchain on windows (vista).
Cannot help you much there.
> Now I create the mylib_stub.c file which contains the marshalling code
> between the libmylib.dll library and ocaml. This file contains the
> following C code:
>
> =======================================
> #include <stdio.h>
> #include <caml/mlvalues.h>
> #include "../mylib/mylib.h"
>
> CAMLprim value
> my_print_stub(value v) {
CAMLparam1(v); /* is missing here, for garbage
collection purposes. */
> char* str = (char*)String_val( v );
/* You do not need the right-hand side (char*) casting. */
> my_print( str );
>
> return Val_unit;
> }
> When I finaly build the test ocaml app which is supposed to use the
> mylib.cma library, ocamlc tells me:
>
> "Unbound module Mylib"
Firs of all, mylib.cma is simply an archive of OCaml modules. It may
contain multiple modules, and might not contain a module called Mylib.
You have to ensure that mylib.cmo is included in mylib.cma. Moreover,
when you create mylib.cma, you also need a compiled interface, i.e. a
mylib.cmi file. It's an interface for mylib.cmo. Without it, there's no
description of module Mylib in mylib.cma.
> The command used to compile the test app is
>
> ocamlc -verbose mylib.cma -c Main.ml
You've got something fundamentally wrong here:
Out of main.ml (lower case for the the first letter), you first create a
main.cmo file. And also a main.mli file with ocamlc -i. You compile the
main.mli file to main.cmi. Then you create the mylib.cma archive from
main.cmo and main.cmi.
And mylib.cma will contain the module Main. Not the module Mylib.
> The Main.ml file contains the following code:
>
> =======================================
> open Mylib
>
> let main () =
> my_print "my_print = ok"
>
>
> main ()
> =======================================
Here, you're declaring the submodule Mylib of the module Main. Also
known as Main.Mylib. Not as Mylib.
> Is there a way to verify that the .cma library was created correctly?
There are some tools, such as ocamldumpobj and ocamlobjinfo. Forgot
which one applies to .cmas.
> I had to install flexlink for ocaml to get the dll linking to work on
> windows.
Can't help you here.
> Kind regards
> Rouan.
All the best,
--
Guillaume Yziquel
http://yziquel.homelinux.org/
next prev parent reply other threads:[~2009-12-30 23:30 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-12-30 17:48 rouanvd
2009-12-30 23:30 ` Guillaume Yziquel [this message]
2010-01-05 13:04 ` [Caml-list] " Damien Doligez
2010-01-08 23:38 ` Guillaume Yziquel
2010-01-08 23:54 ` Basile STARYNKEVITCH
2010-01-09 0:11 ` Guillaume Yziquel
2010-01-09 7:58 ` David Allsopp
2010-01-09 11:33 ` Guillaume Yziquel
2010-01-09 12:52 ` Richard Jones
2010-01-09 14:00 ` Daniel Bünzli
2010-01-09 14:02 ` Daniel Bünzli
2010-01-09 14:21 ` Joel Reymont
2010-01-09 19:36 ` Guillaume Yziquel
2010-01-10 2:11 ` Daniel Bünzli
2010-01-11 17:14 ` Guillaume Yziquel
2010-01-10 13:31 ` ygrek
2010-01-11 18:01 ` Guillaume Yziquel
2010-01-09 19:29 ` Guillaume Yziquel
2010-01-11 12:18 ` Gerd Stolpmann
2010-01-11 17:11 ` Guillaume Yziquel
2010-01-20 14:42 ` Damien Doligez
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4B3BE288.4030701@citycable.ch \
--to=guillaume.yziquel@citycable.ch \
--cc=caml-list@yquem.inria.fr \
--cc=rouanvd@softwarerealisations.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox