尝试使用dyn.load()在R中加载已编译的C代码。收到错误消息

时间:2013-05-01 03:49:41

标签: c r

我在Mac(Mountain Lion)的终端上编译了一个C代码。尝试在Windows 7 PC上使用dyn.load加载它,我收到了这条消息:

Error in inDL(x, as.logical(local), as.logical(now), ...) : 
 unable to load shared object 'C:/Users/Iris/Desktop/mcmc.so':
 LoadLibrary failure:  %1 is not a valid Win32 application.

Windows 7为64位,其中的R也为64位。我在另一个MAC上加载C代码没有问题。我想知道我的代码出了什么问题。感谢。

编辑:

我尝试了找到here的解决方案,但它没有用。

1 个答案:

答案 0 :(得分:2)

Mac会将C代码编译为Mach-O(Mach对象)格式 Mach-O - Wikipedia 这应该可以在Mac平台上正常运行。这就是它在另一台Mac上工作的原因。

Windows使用PE(可移植可执行文件)格式 WinPE - Wikipedia

格式不兼容,这就是LoadLibrary抱怨不是有效的Win32应用程序的原因 - 因为它不是。

在Windows上重新编译C代码,它应该可以正常工作。