I am trying to create a dynamic library (dll) for loading into R with
dyn.load command.

I am trying to use the library libdai (a machine learning C++ library) and
boost (C++ libraries) in my main C++ program. While I am able to compile the
main C++ file I am using successfully into a dll, there is a problem linking
to libraries (libdai.a) and boost libraries. I only have instructions on how
to compile these libraries with cygwin - NOT with minGW tools, as required
by Rtools and R for correct dll creation and loading.

Currently I have R CMD SHLIB configured as follows:

(To create object file)
<path to Rtools/minGW/bin>/g++  -c -Wno-deprecated -Wall -W -Wextra -DCYGWIN
-O3 -I<path toibdai/include>  -I<path to boost_1_46_1> -o  example.o

(To create shared library)
example examples/example.cpp
<path to Rtools/minGW/bin>/g++ -shared -s static-libgcc -o example.dll
example.o -L.../libdai/lib -ldai -L"C:/cygwin/lib" -lcygwin

Including the -lcygwin library is necessary for compilation without linker
error. However, it causes dyn.load to "hang" when used in R.


The tutorials on the web regarding creation of C++ dlls do not discuss
linking to libraries.



Thus my two questions are:
(1) Does anyone know how to compile a C++ program which links to a library,
which dyn.load will accept? What flags are required in the R makeconf? How
do you link in a library to the dll?  What flags must I compile the libdai
and boost libraries with?
(2) If my interfacing issue cannot be resolved, does anyone know any tools
that interface to R that do machine learning belief propagation?

Any help is appreciated.

Ilana Lichtenstein
PhD Candidate
School of IT
University of Sydney

	[[alternative HTML version deleted]]

