我在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的解决方案,但它没有用。
答案 0 :(得分:2)
Mac会将C代码编译为Mach-O(Mach对象)格式 Mach-O - Wikipedia 这应该可以在Mac平台上正常运行。这就是它在另一台Mac上工作的原因。
Windows使用PE(可移植可执行文件)格式 WinPE - Wikipedia
格式不兼容,这就是LoadLibrary抱怨不是有效的Win32应用程序的原因 - 因为它不是。
在Windows上重新编译C代码,它应该可以正常工作。