[Rcpp-devel] Strange behavior with boost::program_options
Watal M. Iwasaki
heavy.watal at gmail.com
Wed Jul 6 07:56:29 CEST 2016
Hi all,
I have been trying to make an R function to call my C++ simulation program
in this way:
```c++
// [[Rcpp::plugins(cpp14)]]
#include <Rcpp.h>
#include <mylib.hpp>
// [[Rcpp::export]]
std::string run_simulation(Rcpp::CharacterVector
args=Rcpp::CharacterVector::create()) {
auto vs_args = Rcpp::as<std::vector<std::string>>(args);
mylib::Simulation sim(vs_args);
sim.run();
return sim.results();
}
```
The class `Simulation` parses arguments with `boost::program_options` and
is implemented in `libmylib.dylib`, which can be linked with `PKG_LIBS =
-lmylib`. Both `devtools::check()` and independent `Rcpp::sourceCpp()` can
successfully build the function `run_simulation()`. It runs perfectly as I
intended **only if it is the first call**. The second time I call
`run_simulation('-v')`, I get the following error:
```
Error: option '-v' is ambiguous and matches different versions of
'--verbose'
```
Other options like `-h` or `--mutation=0` raise the same error. It
indicates that every option is re-defined after the first call (maybe?).
Calling without any argument is always OK, and an executable `a.out` built
with `main.cpp -lmylib` has no problem. I guess the key is how C++ objects
are cached in R environments. Is this a bug in Rcpp? Or am I missing
something?
Thanks,
--
Watal M. Iwasaki / 岩嵜 航
SOKENDAI, Graduate University for Advanced Studies,
Hayama, Kanagawa 240-0193, Japan
+81-46-858-1576
https://heavywatal.github.io/
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.r-forge.r-project.org/pipermail/rcpp-devel/attachments/20160706/4a2b4bf7/attachment.html>
More information about the Rcpp-devel
mailing list