4

最近、Rcpp を使用して R と C++ を統合する R パッケージを作成しました。また、マルチスレッドには C++ ライブラリ Boost が使用されます。私のパッケージをhttp://win-builder.r-project.org/でビルドすることは可能でしょうか?

http://cran.r-project.org/bin/windows/contrib/ThirdPartySoftware.htmlに示すように、Make 変数 --- BOOSTLIB --- が定義されていることがわかりました。

ヘッダーのみのライブラリを使用しようとしたところ、問題はありませんでしたが、個別にコンパイルされたライブラリ Boost.Thread を使用しようとすると、「そのようなファイルがありません」または「未定義の参照」エラーが発生しました。ライブラリのパスが間違っていた可能性があります。しかし、win-builder で説明されている単語はほとんど見つかりません。ヘッダーのみのライブラリのみを使用できますか、または個別にコンパイルされた Boost.Thread ライブラリを見つけるように Makevars.win を構成する方法はありますか?

または、Boost ソース ファイルをパッケージに含めることもできますが、それは良い方法ではないと思います。また、含める方法もわかりません (試したことはありません)。

R に Boost を提供しようとしている R パッケージ BH があることがわかりました。これは非常に役に立ち、BH の作成者が行った作業に非常に感謝していますが、この質問をしたときに Boost.Thread は含まれていませんでした。Boost.Threadが含まれるまで待つことができるかもしれません。しかし、今は自分でやる方が好きなので、もっと学ぶことができます。

4

1 に答える 1

5

現在のBHメンテナーはこちら。いくつかのポイント:

  • 前述のように、BHパッケージは Boost からのヘッダー (のサブセット) のみを提供します。パッケージは必要に応じて拡張されます。すぐに追加する可能性があります (1 つのリクエストがあるため)。

  • Win-Builder はBOOSTLIB、Windows でのヘッダーの設定もサポートしています。コメントが言うように、ライブラリを提供しているとは思わない。RQuantLibでは、QuantLib クラスで必要なヘッダーを取得するためにのみ使用します。

  • いくつかのパッケージが、Windows でのスレッド化の問題と戦っています。仲間の BH 共著者である Jay と Mike は、bigmemoryパッケージとそのサポート パッケージ ( synchronicityなど ) のコンテキストで試しました。しかし、現時点では、Windows のサポートは提供されていません。なぜなら、Windows は異なり、一部の Unix イディオムに苦労しているためです。

編集: SynchronicityREADMEは次のとおりです。

Synchronicity は現在、Boost または 64 ビット Windows の MinGW にバグがあるため、UNIX プラットフォームでのみサポートされています。これらが解決され次第、サポートを Windows に拡大します。

このパッケージを 32 ビット Windows で使用したい場合は、可能かもしれません (説明の OS_type 行をコメントアウトしてください)。

2010 年 10 月 30 日。構成を変更して、Solaris の問題を修正しました。

つまり、信頼できるビルド済みのツールはありません。

于 2013-10-29T12:38:35.097 に答える