0

我在 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 代码没有问题。我想知道我的代码出了什么问题。谢谢。

编辑:

我尝试了在这里找到的解决方案,但没有奏效。

4

1 回答 1

2

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

Windows 使用 PE (Portable Executable) 格式 WinPE - 维基百科

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

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

于 2013-05-01T04:03:14.647 回答