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
prev parent 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