Rパッケージに含めるコンパイル済みのCライブラリ(lib.dll)を用意しています。パッケージは.Call経由でlib.dllの機能にアクセスできます。私はパッケージに他のCソースコードがなく、lib.dllのソースコードをパッケージと共にビルドすることはオプションではありません。Rパッケージにコンパイルされた共有Cライブラリを含み、Rラッパー関数から関数を呼び出す
パッケージにlib.dllを含める正式な方法は何ですか?私がCRANにパッケージを提出するつもりはないので、コンパイルされたコードに関するCRANのルールはそれほど重要ではありませんが、最終的には他のオンラインソースでパッケージを利用できるようにしたいので、いつも手動でパッケージのインストールは最適ではありません。私はこれを行う "通常の"方法があるように感じるが、私はそれを動作させるように見えることはできません。
私はSOFARしようとしているもの:
は、srcフォルダにDLLを入れて、名前空間ファイルにuseDynLib(LIB)を追加するが、これはパッケージのビルド中に問題が発生し
より良い解決策がないため、すでにビルドされたパッケージにdllを追加しようとしましたが、.dll()を使用してdllを動的にロードする.onLoadと.onAttach関数(zzz.R)を追加しました。これは最初はうまくいくと思われ、pakcageをロードした後に.Call()を使ってlib.dllの関数に直接アクセスすることができましたが、Rラッパー関数を使ってアクセスしようとすると、DLLの関数が名前空間にない;私は私の理解は、ケース誰かにパッケージ
"lib.dllのソースコードをパッケージと共にビルドすることはオプションではありません" - 好奇心。どうして?その場合、これは(否定的に)配布可能性に影響するためです。 –