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]]
______________________________________________
[email protected] mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel