[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