caml-list - the Caml user's mailing list
 help / color / mirror / Atom feed
From: Robert Roessler <roessler@rftp.com>
To: Caml-list <caml-list@inria.fr>
Subject: Re: [Caml-list] ocamlopt and *using* DLLs
Date: Thu, 26 May 2005 18:50:15 -0700	[thread overview]
Message-ID: <42967CD7.70605@rftp.com> (raw)
In-Reply-To: <001d01c5601e$531fb740$0d05a8c0@PWARP>

Nicolas Cannasse wrote:

> The main problem is that your DLL need to call Ocaml API, which it is linked
> with.
> 
> In bytecode there is no problem since the whole API is inside ocamlrun.dll
> so your DLL and ocamlrun.exe will simply use this API dll together.
> In native compilation however there is no more ocamlrun.dll, since the API
> is staticly linked into your executable. That means that your DLL that was
> working in bytecode will load ocamlrun.dll and call it while your executable
> is calling staticly linked API. This will result quite quickly in a crash
> since ocamlrun.dll is not initialized correctly.
> 
> The only possible way to get the DLL working is to patch it so it loads its
> API inside your.exe and not inside ocamlrun.dll. But then you will need a
> different version of the DLL for each application (!). It would be nice if
> OCaml could provide the equivalent of ocamlrun.dll for the native
> compilation mode.

Thanks for the explanation of the key difference between the models,
Nicolas!

I have this running just fine now, and it is not really as grim as you
make it sound above. :)  Since my DLL really only exists to provide an
interface between OCaml and C-land, I just followed the model used by
LablGTK, and build that interface one of two ways: "dllscintilla.dll"
for bytecode, and "libscintilla.lib" for native.

Robert Roessler
roessler@rftp.com
http://www.rftp.com


      reply	other threads:[~2005-05-27  1:48 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2005-05-24  3:54 Robert Roessler
2005-05-24  4:29 ` [Caml-list] " Jacques Garrigue
2005-05-24  6:39   ` Robert Roessler
2005-05-24  7:10     ` Nicolas Cannasse
2005-05-27  1:50       ` Robert Roessler
     [not found]       ` <42967B63.8040408@rftp.com>
     [not found]         ` <02ce01c56355$14c93db0$19b0e152@warp>
2005-06-01 20:32           ` Robert Roessler
     [not found]             ` <0d4f01c56702$94853300$0300a8c0@DBLSYG61>
2005-06-02  4:24               ` Robert Roessler
2005-05-27  2:13   ` Robert Roessler
2005-05-27  8:17     ` Anatoly Zaretsky
2005-05-28  6:42       ` Nicolas Cannasse
2005-05-24  5:06 ` Nicolas Cannasse
2005-05-27  1:50   ` Robert Roessler [this message]

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=42967CD7.70605@rftp.com \
    --to=roessler@rftp.com \
    --cc=caml-list@inria.fr \
    /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;
as well as URLs for NNTP newsgroup(s).