Многое исследование здесь и углубленное исследование через ссылки Google, но безрезультатно.Связывание статической библиотеки с Xcode в приложение Lazarus не соответствует несоответствию архитектуры
Я создал простую, одну функцию, статическую библиотеку C с OSX Xcode (5), которую я пытаюсь связать в приложении Lazarus, в основном для переноса функции Xcode с Xcode на Lazarus.
Xcode создает статическую библиотеку в порядке, и у меня есть то, что, кажется, правильный код связи в приложении Lazarus, следующим образом:
type
byteptr = ^byte;
const
libname = 'libLORaudio.a';
function LORaudioPlay (fd : longint; audio : byteptr): Integer;
cdecl; external libname;
r := LORaudioPlay(e, z);
Все это компилируется нормально, но сборка не может с следующие сообщения:
Id: symbol(s) not found for architecture i386
Id: Warning: ignoring file libLORaudio.a, file was built for archive which is not the architecture being linked (i386): libLORaudio.a
(and it goes on to say the function is undefined, of course, since it ignored the library that supplies it.)
Моя проблема может быть решена одним из двух способов, ни один из которых я нашел достаточно информации о, онлайн, ни в Xcode или Lazarus.
Одним из решений было бы получить Xcode для создания статической библиотеки с архитектурой, ожидаемой от Lazarus. Я попробовал различные варианты установки архитектур построения в Xcode, упомянутых в других ответах здесь, на похожие вопросы, но, похоже, я не сделал их правильно, потому что никто из них не работал для меня.
Другим решением было бы заставить Lazarus принять архитектуру, создаваемую Xcode. Документация Laz.y не помогает в этом отношении.
Любые предложения, которые я мог бы попробовать? Большое спасибо за ваше внимание.
Я бы предположил, что вы собрали свою библиотеку для архитектуры, отличной от архитектуры Lazarus/FPC (i386, как указано в предупреждающем тексте). Попробуйте установить 32-битную архитектуру в режиме сборки вашей библиотеки. – Abelisto
@Abelisto Определенно несоответствие архитектуры. Я попробовал несколько способов заставить Xcode принять 32-битную спецификацию архитектуры, но он принял только «i386 x86_64», который был изначально. Есть ли какая-то задняя дверь в настройках сборки? – Lor
Не уверен, я не знаком с OS X.Но вы также можете попытаться изменить целевую ОС и процессор в параметрах проекта Lazarus (страница «Конфигурация и цель»). [Здесь] (http://sourceforge.net/projects/freepascal/files/Mac%20OS%20X/2.6.4/) вы можете загрузить и установить соответствующий FPC. Вам нужно 'fpc-2.6.4.intel-ppc64-macosx.dmg', как я понимаю (проверьте версию, она должна быть такой же с уже установленным FPC). – Abelisto