我尝试使用dyn.load
命令加载外部dll库,但每次运行命令后关闭我的R会话。我使用的是Windows 10,这是我的R版本:
版本 _
平台x86_64-w64-mingw32
拱x86_64
os mingw32
system x86_64,mingw32
状态
专业3 未成年人1.3
2015年 月03
第09天 svn rev 67962
语言R
version.string R版本3.1.3(2015-03-09) 昵称Smooth Sidewalk
测试这个,这是一个使用windows native dll锁定屏幕的简单代码:
dyn.load("C:\\Windows\\System32\\user32.dll")
.Call("LockWorkStation")
它正在锁定我的屏幕,但是当我重新登录时,我的R会话正在崩溃。
答案 0 :(得分:1)
dyn.load()
并不是一种加载DLL的方法,而是加载由R编译器工具链创建的DLL,如Writing R Extensions手册中所述。
可以通过在Makevars.win文件中链接它们来使用DLL
PKG_LIBS = -L$(XXX_DIR)/lib -lxxx
如1.2.1 Using Makevars部分所述,但这意味着在DLL周围编写C包装。
我不是Windows和R的专家,在R中依赖特定于平台的库是不寻常的,所以请带着我的评论。
答案 1 :(得分:0)
如果我将.Call
更改为.C
,它似乎会起作用。
我总结如果您知道如何在DLL中运行函数(使用.Call
,.C
,.External
或.Fortran
),您可以使用R中的常规DLL。