新しい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
メッセージはやや不可解です。他のパッケージも調べたところ、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 [〜#〜]
最も直接的な直接的なアプローチは次のとおりです。
tools::package_native_routine_registration_skeleton(".")
を実行し、_packagename_init.c
_ファイルに完全な出力をコピーして貼り付けて、_src/
_に入れますNAMESPACE
を更新し、useDynLib(packagename, .registration = TRUE)
であることを確認しますexportPattern
をexport( list of object to be exported )
に置き換えます7月18日更新
RおよびRStudioの最新バージョンのdevtoolsを使用して@Symbolixが指摘したように、ポイント2(init.cファイル)は、devtools(RStudioチェックディジットを使用)またはツールパッケージのいずれかによって処理されます。
Windowsビルドパッケージで永続的な問題が発生しました。 (.soではなく.dll)
上記の受け入れられた回答もWindowsのこの問題を解決するはずですが、解決しない場合は。 objdump.exe
が適切なArchを指していることを確認してください。すなわち.../Mingw_64/bin/objdump.exe
。これは、which objdump.exe
を使用してコマンドプロンプトから確認できます。どういうわけか、32ビットobjdump.exe
は、私のパスの中でより高い優先順位の位置に到達しました。このArchの不一致は、File format not recognized
エラーを生成します。