r - 使用 DLL 构建 R 包
问题描述
我正在尝试创建一个二进制包,其中包含.dll
该包所依赖的预编译文件。我有tkogl2.dll
需要在使用包时加载的文件。创建包并尝试使用构建后,devtools::build(binary = TRUE)
我收到以下错误:
Error: package or namespace load failed for 'GUImorphTest' in library.dynam(lib, package, package.lib):
DLL 'tkogl2.dll' not found: maybe not installed for this architecture?
错误: 载入失败
停止执行
*** arch - x64
Error: package or namespace load failed for 'GUImorphTest' in library.dynam(lib, package, package.lib):
DLL 'tkogl2.dll' not found: maybe not installed for this architecture?
错误: 载入失败
停止执行
ERROR: loading failed for 'i386', 'x64'
这很可能是由于NAMESPACE
文件,虽然我是这个过程的新手,所以我不完全确定它应该包含什么。它目前只包含useDynLib(tkogl2.dll)
我通过谷歌搜索找到的内容。它也可能是我将 .dll 放入包中的位置。我只是创建了一个 libs 文件夹,如下所示:
感谢任何帮助,谢谢!
编辑:这里是 onload fct
.onLoad <- function(libname, pkgname) {
chname <- "tkogl2"
file.ext <- .Platform$dynlib.ext #dll file
dlname <- paste(chname, file.ext, sep = "")
if (is.character(.Platform$r_arch) && .Platform$r_arch != "")
path <- file.path("libs", .Platform$r_arc, dlname)
else path <- file.path("libs", dlname)
file <- system.file(path, package = pkgname, lib.loc = libname)[1] #grabs full file name
print(file)
tryCatch(tcl("load", file, "Tkogl2"),
error = function(e)
warning("loading tkogl2 failed", call. = FALSE))
}
解决方案
推荐阅读
- php - CSS 和 Bootstrap 在 laravel5.8 中不起作用。我怎样才能解决这个问题?
- r - 无响应的滑块
- python - 由于 socket.py 中的错误,无法设置服务器
- c# - 如何解决 Azure Web 应用程序上的“请求标头过长”
- python - 尝试处理 IndentationError 异常
- kendo-ui-angular2 - 按下带有文本框值的回车键后如何触发事件?
- python - 使用 pyserial 的 AT+CIMI 命令导致空字符串
- arrays - Array 仅打印最后一项回收站视图
- javascript - 错误:TS2304:找不到名称“t”。在运行角度项目时
- javascript - 远程脚本之前或之后的dataLayer:Google Analytics和TagManager的区别