【发布时间】:2011-02-06 23:12:47
【问题描述】:
我最近从 32 位笔记本电脑升级到 64 位台式机(均为 win7)。我刚刚发现使用dyn.load 加载dll 时出现错误。我想这是一个简单的错误,我忽略了一些东西。
比如我写了这个简单的c函数(foo.c):
void foo( int *x) {*x = *x + 1;}
然后在命令提示符下编译:
R CMD SHLIB foo.c
然后在 32bit R 中我可以在 R 中使用它:
> dyn.load("foo.dll")
> .C("foo",as.integer(1))
[[1]]
[1] 2
但在 64 位 R 中我得到:
> dyn.load("foo.dll")
Error in inDL(x, as.logical(local), as.logical(now), ...) :
unable to load shared object 'C:/Users/Sacha/Documents/R/foo.dll':
LoadLibrary failure: %1 is not a valid Win32 application.
nd.
编辑:
作为参考,R CMD 可以通过使用--arch 64x 强制在架构中:
R --arch x64 CMD SHLIB foo.c
其实很清楚,我知道我犯了一个新手错误:)
【问题讨论】: