web-dev-qa-db-ja.com

R CMDチェックノート:「R_registerRoutines」、「R_useDynamicSymbols」への呼び出しは見つかりませんでした

新しいR開発バージョン(R Under development(unstable)(2017-02-15 r72179))でR CMD checkに表示される次の注を回避する方法は?

• checking for unstated dependencies in examples ... OK
• checking line endings in C/C++/Fortran sources/headers ... OK
• checking compiled code ... NOTE
File ‘pkgname/libs/pkgname.so’:
  Found no calls to: ‘R_registerRoutines’, ‘R_useDynamicSymbols’

It is good practice to register native routines and to disable symbol
search.

たとえば、 Hmisc

44
Crops

メッセージはやや不可解です。他のパッケージも調べたところ、NAMESPACEファイルのuseDynLib(packagename)useDynLib(packagename, .registration = TRUE)に置き換えられていることがわかりました。

さらに、次のコードで_.c_ディレクトリにregisterDynamicSymbolという名前の_src/_ファイルを追加しました。

_// RegisteringDynamic Symbols

#include <R.h>
#include <Rinternals.h>
#include <R_ext/Rdynload.h>

void R_init_markovchain(DllInfo* info) {
  R_registerRoutines(info, NULL, NULL, NULL, NULL);
  R_useDynamicSymbols(info, TRUE);
}
_

GitHub Rcpp からこの提案を取りました。正規参照は R Extensionsの記述 にあります

R Devel Mailinglist 補足情報を提供しました。

[〜#〜] update [〜#〜]

最も直接的な直接的なアプローチは次のとおりです。

  1. 現在のR開発バージョンを使用します(最終的には3.4になります)
  2. tools::package_native_routine_registration_skeleton(".")を実行し、_packagename_init.c_ファイルに完全な出力をコピーして貼り付けて、_src/_に入れます
  3. NAMESPACEを更新し、useDynLib(packagename, .registration = TRUE)であることを確認します
  4. 必要に応じて、exportPatternexport( list of object to be exported )に置き換えます

7月18日更新

RおよびRStudioの最新バージョンのdevtoolsを使用して@Symbolixが指摘したように、ポイント2(init.cファイル)は、devtools(RStudioチェックディジットを使用)またはツールパッケージのいずれかによって処理されます。

37

Windowsビルドパッケージで永続的な問題が発生しました。 (.soではなく.dll)

上記の受け入れられた回答もWindowsのこの問題を解決するはずですが、解決しない場合は。 objdump.exeが適切なArchを指していることを確認してください。すなわち.../Mingw_64/bin/objdump.exe。これは、which objdump.exeを使用してコマンドプロンプトから確認できます。どういうわけか、32ビットobjdump.exeは、私のパスの中でより高い優先順位の位置に到達しました。このArchの不一致は、File format not recognizedエラーを生成します。

5
Neil Schneider