Я скомпилировал код C в Терминале на Mac (Mountain Lion). Пытаясь загрузить его с помощью dyn.load на ПК с Windows 7, я получил такое сообщение:
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-битная. У меня не было проблем с загрузкой кода C на другом MAC. Интересно, что пошло не так с моим кодом. Спасибо.
РЕДАКТИРОВАТЬ:
Я попробовал найти решение здесь a>, но это не сработало.
1 ответ
Mac скомпилирует код C в формат Mach-O (объект Mach). Mach-O - Википедия Это должно нормально работать на платформе Mac. Вот почему это сработало на другом Mac.
Windows использует формат PE (Portable Executable) WinPE - Википедия
Форматы несовместимы, поэтому LoadLibrary жалуется на то, что не является допустимым приложением Win32 - потому что это не так.
Перекомпилируйте код C в Windows, и он должен работать.
Похожие вопросы
Связанные вопросы
Новые вопросы
c
C - это язык программирования общего назначения, используемый для системного программирования (ОС и встраиваемых), библиотек, игр и кроссплатформенности. Этот тег следует использовать с общими вопросами, касающимися языка C, как это определено в стандарте ISO 9899 (последняя версия 9899: 2018, если не указано иное, а также для запросов, специфичных для версии, с c89, c99, c11 и т. Д.). C отличается от C ++ и не должен сочетаться с тэгом C ++ без разумной причины.