J2Obj C неопределенные символы для архитектуры arm64 - PullRequest
0 голосов
/ 03 февраля 2020

Я пытаюсь преобразовать библиотеку java в target- c с помощью j2obj c и включить сгенерированные файлы obj c в мой проект XCode. Мне удалось сгенерировать файлы obj c, но XCode выдает мне следующую ошибку: https://i.stack.imgur.com/QX3zF.png

Я использовал lipo -info для файла .o и получаю это "архитектура: x86_64" . Означает ли это, что файлы obj c не предназначены для работы на архитектурах arm64, и если да, то как я могу решить эту проблему? Есть ли какие-либо флаги, которые я мог бы использовать для генерации файлов для arm64?

Предыдущая ошибка, которую я имел, была "AR C запрещает явное сообщение" , и я решил это, добавив флаг компилятора -fno-obj c -ar c для всех источников компиляции, связанных с этой ошибкой. Это решение безопасно?

1 Ответ

0 голосов
/ 03 февраля 2020

Для компиляции для arm64 необходимы флаги -arch arm64 и -isysroot IPHONE_SDK_DIRECTORY. Чтобы найти IPHONE_SDK_DIRECTORY в вашей системе, запустите xcrun -sdk iphoneos --show-sdk-path.

В этом нет ничего J2Obj C -specifi c, это обычные iOS флаги, которые вы найдете в вашем журнале. успешной компиляции файла Objective C в Xcode и нажмите правую кнопку, чтобы развернуть и показать все используемые флаги.

J2Obj C по умолчанию не генерирует код AR C, поэтому -fno-obj c -ar c флаг в порядке. Если вы предпочитаете AR C, запустите j2obj c с его флагом -use-arc. Не компилируйте эти сгенерированные файлы с помощью -fno-obj c -ar c, так как объекты не будут освобождены, когда ваше приложение будет с ними работать.

...