Я недавно перешел с 32-битного ноутбука на 64-битный рабочий стол (оба win7). Я только что узнал, что я получаю ошибку сейчас при загрузке DLL, используя dyn.load
. Я думаю, это простая ошибка, и я что-то упускаю.
Например, я пишу эту простую функцию c (foo.c):
void foo( int *x) {*x = *x + 1;}
Затем скомпилируйте его в командной строке:
R CMD SHLIB foo.c
Тогда в 32-битном 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.
Edit:
Для справки, R CMD может быть принудительно установлен в архитектуре с помощью --arch 64x
:
R --arch x64 CMD SHLIB foo.c
Совершенно ясно, на самом деле, я знал, что совершил грубую ошибку:)