4 Using camlidl
4.1 Overview
The camlidl stub generator is invoked as follows:
camlidl options file1.idl file2.idl ...
For each file f.idl given on the command line, camlidl
generates the following files:
-
A Caml interface file f.mli that defines the Caml view
of the IDL file. It contains Caml definitions for the types declared
in the IDL file, as well as declarations for the functions and the
interfaces.
- A Caml implementation file f.ml that implements the
f.mli file.
- A C source file f_stubs.c that contains the stub functions for
converting between C and Caml data representations.
- If the -header option is given, a C header file f.h
containing C declarations for the types declared in the IDL file.
The generated .ml and .c files must be compiled and linked with
the remainder of the Caml program.
4.2 Options
The following command-line options are recognized by camlidl.
- -cpp
-
Pre-process the source IDL files with the C preprocessor. This option
is set by default.
- -D symbol=value
-
Define a preprocessor symbol. The option -Dsymbol=value
is passed to the C preprocessor. The value can be omitted,
as in -D symbol, and defaults to 1.
- -header
-
Generate a C header file f.h containing C declarations for the
types and functions declared in the IDL file f.c.
- -I dir
-
Add the directory dir to the list of directories searched for
.idl files, as given on the command line or recursively loaded
by import statements.
- -keep-labels
-
Keep the Caml names of record labels as specified in the IDL file.
Do not prefix them with the name of the enclosing struct, even if they
appear in several struct definitions.
- -nocpp
-
Suppresses the pre-processing of source IDL files.
- -no-include
-
By default, camlidl emits a #include "f.h" statement in
the file f.c containing the generated C code.
The f.h header file being included is
either the one generated by camlidl -header, or generated by another
tool (such as Microsoft’s midl compiler) from the IDL file, or
hand-written. The f.h file is assumed to provide all C type
declarations needed for compiling the stub code.
The -no-include option suppresses the automatic inclusion of the
f.h file. The IDL file should then include the right header
files and provide the right type declarations via quote statements.
- -prefix-all-labels
-
Prefix all Caml names of record labels with the name of the enclosing
struct. The default is to prefix only those labels that could cause
ambiguity because they appear in several struct definitions.
- -prepro preprocessing-command
-
Set the command that is executed to pre-process the source IDL files.
The default is the C preprocessor.
4.3 The camlidldll script
Under Windows, a bash script called camlidldll is provided to
automate the construction of a DLL containing a COM component written
in Caml.
The script camlidldll accepts essentially the same command-line
arguments and options as the ocamlc compiler. (It also accepts
.tlb type library files on the command-line; see
section 5.3, “Dispatch interfaces”, for more
information on type libraries.)
It produces a DLL file that encapsulates the Caml and C object files
given on the command line.
Use regsvr32 /s file.dll to record the components in the
system registry once it is compiled to a DLL.