gpt4 book ai didi

c - 使用 dyn.load 在 R x64 中加载已编译的 c 代码的问题

转载 作者:太空狗 更新时间:2023-10-29 17:13:05 26 4
gpt4 key购买 nike

我最近从 32 位笔记本电脑换成了 64 位台式机(均为 win7)。我刚刚发现在使用 dyn.load 加载 dll 时出现错误。我想这是一个简单的错误,我忽略了一些东西。

例如,我编写了这个简单的 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 位 RI 中我得到:

> 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.

编辑:

作为引用,可以使用 --arch 64x 在架构中强制执行 R CMD:

R --arch x64 CMD SHLIB foo.c

其实很清楚,我知道我犯了一个低级错误:)

最佳答案

我的猜测是您正在将其编译为 32 位目标。您需要使用 64 位工具在 64 位机器上构建它。您不能将 32 位 DLL 加载到 64 位进程中,反之亦然。

关于c - 使用 dyn.load 在 R x64 中加载已编译的 c 代码的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4916853/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com