caml-list - the Caml user's mailing list
 help / color / mirror / Atom feed
From: Leonardo Laguna <modlfo@gmail.com>
To: Adrien Nader <adrien@notk.org>
Cc: caml-list@inria.fr
Subject: Re: [Caml-list] Embedding Ocaml in a windows application
Date: Fri, 9 May 2014 22:16:03 +0200	[thread overview]
Message-ID: <CAF=ojbXh0KbnwZJsn4igz-pPyROhZC4iafx71LkDjg8rhFJ5ew@mail.gmail.com> (raw)
In-Reply-To: <20140509121324.GA26367@notk.org>

[-- Attachment #1: Type: text/plain, Size: 3271 bytes --]

I have given up on compiling the msvc port. I don't know why I'm getting
errors when the '.exe' is not there.

I will try to explain better what I want to do.

I have the following files:

- plug.lib (provided by the software vendor, closed source, compiled with
VC++), in OSX I have plug.a
- my_main.c (the code for the plugin)
- ocaml_stub.c (this code calls 'caml_startup()')
- ocaml_code.ml

in OSX I compile my_main.c, ocaml_stub.c and ocaml_code.ml to obtain '.o'
files. Then I link the .o files with plug.a and libasmrun.a. This works
fine.

In windows I have wodi32, visual studio 2008 and Flexdll. I tried the
following.
- Using cl compile, ocaml_stub.c, my_main.c to obtain '.obj' files
- Using ocamlopt, compile ocaml_code.ml to obtain a '.o' file
- Using flexlink to link the .obj, .o, libasmrun.a, plug.lib, libgcc.a and
libc.a

This gives me an error:

** Cannot resolve symbols for libasmrun.a(floats.o):
 ___strtod

I have tried to create my own strtod function and link it does not pick it.

Anybody knows how can I link my program.

Thanks.

Leonardo





On Fri, May 9, 2014 at 2:13 PM, Adrien Nader <adrien@notk.org> wrote:

> Hi,
>
> On Fri, May 09, 2014, Leonardo Laguna wrote:
> > Hello,
> >
> > I’m trying to make a plugin for a third party application using Ocaml.
>  This
> > plugin is a shared library that is usually written in C, so you take
> your C
> > code and link it with a static library (provided by the software vendor)
> in
> > order to get a shared library that can be loaded by the application.  I
> made a
> > small test in OSX that embeds Ocaml  (as shown in ‘Interoperability with
> C’ of
> > the book ‘Developing applications with Objective Caml’) and works fine.
> > However in windows I’m running into problems.
> >
> > The shared library that the vendor provides is compiler with VC++,
> therefore
> > is not possible to link object files produced by the Cygwin neither MinGW
> > port. For that reason I tried to compile the MSVC port of Ocaml and I
> didn’t
> > succeed.
>
> Depends: if the library is C then you can perfectly mix the two
> compilers. Keep in mind that when you build with GCC on Windows, you're
> still using the Windows libraries like msvcrt.dll or kernel32.dll and
> they've been built using MSVC.
>
> > I followed the instructions in the README.win32. The first problem I had
> was
> > that flexlink was not able to call ‘link’, so I downloaded the flexlink
> code
> > and changed it to call instead ‘link.exe’, this worked. Then flexlink
> could
> > not handle Cygwin paths like ‘/tmp/’or ‘/cygdrive/c/’ . I modified the
> code so
> > it replaces the Cygwin paths to Windows paths. It worked. I continued
> until I
> > got the message that the ‘ml’ command does not exist. The environment is
> set
> > correctly and I can call ‘ml’ from the terminal.
> >
> > Has anyone tried to compile the MSVC port lately?
>
> IIRC even the MSVC port is built from Cygwin and I think it won't mind
> whether there are trailing '.exe' or not.
> But now I'm not sure I understand: what is calling flexlink? Is it your
> build system or the ocaml compiler's?
>
> --
> Adrien Nader
>

[-- Attachment #2: Type: text/html, Size: 4316 bytes --]

  reply	other threads:[~2014-05-09 20:16 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-05-09  7:42 Leonardo Laguna
2014-05-09 12:13 ` Adrien Nader
2014-05-09 20:16   ` Leonardo Laguna [this message]
2014-05-09 20:20     ` Adrien Nader
2014-05-09 20:27       ` Leonardo Laguna
2014-05-09 20:40         ` David Allsopp
2014-05-09 21:54         ` Adrien Nader
2014-05-09 22:00           ` Leonardo Laguna

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='CAF=ojbXh0KbnwZJsn4igz-pPyROhZC4iafx71LkDjg8rhFJ5ew@mail.gmail.com' \
    --to=modlfo@gmail.com \
    --cc=adrien@notk.org \
    --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).