- R-extentionマニュアルの5.6(こちら)(こちらなら4.3)をそのままなぞれば、ヘッダーファイルとそれに対応するcppファイルとを使った実行cppファイルを、DLLにした上で、R内から呼び出して使うことはできる
- はて。
- あまりに自分の使い方と遠いので、何をしているのかわからない…
- また、実行すると、Rの終了時に何か関係したことをするのだが、それによってフリーズしたりするので、ちょっと書き換えたいところだが…
- でも、簡単ながらC++ライブラリを取り込むことを自分でできたことはよかった
class X {
public: X (); ~X ();
};
class Y {
public: Y (); ~Y ();
};
#include <R.h>
#include "X.h"
static Y y;
X::X() { REprintf("constructor X\n"); }
X::~X() { REprintf("destructor X\n"); }
Y::Y() { REprintf("constructor Y\n"); }
Y::~Y() { REprintf("destructor Y\n"); }
#include "X.h"
extern "C" {
void X_main() {
X x;
}
}
# R CMD SHLIB X.cpp X_main.cpp
> dyn.load(paste("X",.Platform$dynlib.ext,sep=""))
constructor Y
> .C("X_main")
constructor X
destructor X
list()