2013-04-13 7 views
8

私はR.でそれをロードし、使用できるように、CのソースコードからDLLの動的ライブラリを作成したい私は今(Windowsの場合)RでCからDLLの動的ライブラリを作成

R CMD SHLIB foo.c 

を使用していますWindows 7のコマンドラインで。しかし、何も起こらなかった。エラーメッセージは表示されませんが、dllファイルは作成されませんでした。

私は何をしましたか?ありがとうございました。

答えて

7

私の質問があまり明確でない場合は申し訳ありません。しかし、私は物事を働かせる方法と可能性のある間違いを理解しました。うまくいけば、それは誰かのために便利です。手順は次のとおりです。

  1. R(最新バージョンは3.0.0です)をインストールします。 R binフォルダをPATHに追加してください。
  2. Rtools Hereの最新バージョンをインストールしてください。 "c:\ Rtools \ bin; c:\ Rtools \ gcc-4.6.3 \ bin;を必ず追加してください。
  3. PATHに、あなたはfoo.dllを持っている必要があり

foo.cのWindowsのコマンドウィンドウでfoo.cの

  • に保存されたCコード、タイプ

    R CMD SHLIBを書きます64bits Rで作成されたfoo.dllは64bits Rにしか読み込めないことに注意してください。32bits Rで読み込もうとすると、エラーメッセージが表示されます。

  • +0

    [TDM-GCC](http://tdm-gcc.tdragon.net/)、[Cygwin](https://www.cygwin.com/)、[msysGit](https: //msysgit.github.io/)(netinstallのみ)、Rtoolsはうまく機能します! – DenisKolodin

    2

    「何も起こっていません」とまったく何を意味していますか? Rはあなたのパスにありますか?

    R --versionは何を示していますか? R CMD config CCR CMD config CFLAGSはどうですか?

    最後に、あなたは、LA

    R> library(Rcpp) 
    R> cppFunction('double foo(double x) { return std::sqrt(x); }') 
    R> foo(4) 
    [1] 2 
    R> foo(4.2) 
    [1] 2.04939 
    R> unclass(foo) 
    function (x) 
    .Primitive(".Call")(<pointer: 0x7f251ba76530>, x) 
    R> 
    
    ここでは、 cppFunction()を使用

    (と飛んで物事を行うことができますRcppがインストールされていた(そして、あなたのツールチェインは、PATHの設定およびすべての残りの部分を含め、正しかった)場合コンパイル、リンク、ロードするために、平方根を取る単純な(そしてかなり役に立たない)C(++)関数 をコンパイル、トリックします。

    関連する問題