Browse thread
[Caml-list] DLL_(windows)_creation_problem
- matthieu.dubuget@libertysurf.fr
[
Home
]
[ Index:
by date
|
by threads
]
[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
| Date: | -- (:) |
| From: | matthieu.dubuget@libertysurf.fr <matthieu.dubuget@l...> |
| Subject: | [Caml-list] DLL_(windows)_creation_problem |
Hello camlers!
I experience a strange problem with the following on windows 98.
I have the following files:
=============== dac.ml ===========================
let affiche dac =
Printf.printf "%d\n" dac
==================================================
=========== ms_dac.h =============================
void ms_dac_init ();
int ms_dac_init_ok (void);
==================================================
=========== ms_dac.c =============================
#include "ms_dac.h"
#include <caml/callback.h>
static int ms_dac_init_done = 0;
void ms_dac_init (){
char *vide = 0l;
if (!ms_dac_init_done){
caml_startup (&vide);
ms_dac_init_done = 1;
}
}
int ms_dac_init_ok (void){
return ms_dac_init_done;
}
==================================================
=========== ms_dac.def ===========================
EXPORTS
ms_dac_init
ms_dac_init_ok
==================================================
========== t.c ===================================
#include <stdio.h>
#include "ms_dac.h"
int main (){
int ok;
ok = ms_dac_init_ok();
printf ("%d\n",ok);
fflush(stdout);
ms_dac_init();
ok = ms_dac_init_ok();
printf ("%d\n",ok);
fflush(stdout);
return 0;
}
==================================================
C:\test>ocamlc -v
ocamlc -v
The Objective Caml compiler, version 3.08.0
Standard library directory: c:\ocaml\lib
C:\test>ocamlopt -output-obj -o dacl.obj dac.ml
ocamlopt -output-obj -o dacl.obj dac.ml
C:\test>ocamlopt -c ms_dac.c
ocamlopt -c ms_dac.c
ms_dac.c
C:\test>link -nologo -dll -out:ms_dac.dll -def:ms_dac.def
dacl.obj ms_dac.obj -libpath:c:\ocaml\lib libasmrun.lib
link -nologo -dll -out:ms_dac.dll -def:ms_dac.def dacl.obj
ms_dac.obj -libpath:c:\ocaml\lib libasmrun.lib
Creating library ms_dac.lib and object ms_dac.exp
C:\test>cl -o t.exe -nologo -Ox -MT ms_dac.lib t.c
cl -o t.exe -nologo -Ox -MT ms_dac.lib t.c
t.c
C:\test>t.exe
t.exe
0
<------------------- At this step I get an error from Windows
If I modify the function definition (that uses Printf.printf) in
the ml file, their is no more error.
let affiche dac =
print_int dac
I suspect a conflict, or a missing library, but I can't find
out
what is going on exactly.
On linux, this gives the following with the original files:
$ ocamlc -v
The Objective Caml compiler, version 3.08.1
Standard library directory: /usr/lib/ocaml/3.08
$ ocamlopt -output-obj -o dac1.o dac.ml
$ ocamlopt -c ms_dac.c
$ gcc -shared -o libdac.so dac1.o ms_dac.o
-L/usr/lib/ocaml/3.08 -lasmrun
$ gcc -o t libdac.so t.c -lm -ldl
$ LD_LIBRARY_PATH=. ./t
0
1
$
Thanks in advance
Matthieu Dubuget
************************ ADSL ILLIMITE TISCALI + TELEPHONE GRATUIT ************************
Surfez 40 fois plus vite pour 30EUR/mois seulement ! Et téléphonez partout en France gratuitement,
vers les postes fixes (hors numéros spéciaux). Tarifs très avantageux vers les mobiles et l'international !
Pour profiter de cette offre exceptionnelle, cliquez ici : http://register.tiscali.fr/adsl (voir conditions sur le site)
-------------------
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