dyn.load没有任何线索崩溃

时间:2016-03-03 04:50:16

标签: r

我尝试使用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会话正在崩溃。

2 个答案:

答案 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。