У меня есть старый проект, написанный на Objective-C. Было несколько собственных компиляторов, написанных для компиляции из кода Objective-C в код C. Однако из-за некоторых проблем совместимости эти компиляторы больше не работают.
В Build 2015 Microsoft продемонстрировала создание некоторых проектов с кодом Objective-C (.m) в Visual Studio. Однако я не могу найти шаги для их выполнения.
Ищем шаги для того же самого. У меня есть Visual Studio 2015 и 2017.
Да, это трансляция Сборка 2015 г.. Это просто демонстрирует функцию, но не говорит, как это сделать. Я имею в виду, нужно ли мне устанавливать какое-либо расширение или ссылку на какие-либо библиотеки. Вот что я пытаюсь выяснить.
Я твердо уверен, что вы говорите о WinObjC, мосте Windows для iOS. Это проект с открытым исходным кодом, который предоставляет среду разработки Objective-C для Visual Studio и поддерживает API-интерфейсы iOS.
Вы должны установить To Chocolatey и winobjc-tools, чтобы начать работу с существующим проектом Xcode. Подробности установки здесь: Загрузка и установка WinObjC
Собственно, эта библиотека мне уже попадалась. Я подумал, что каким-то образом MS включила поддержку в VS 2015 по умолчанию или, по крайней мере, в VS 2017, может быть, в Xamarin или UWP.
С помощью этого инструмента я смог сгенерировать файлы sln и vcxproj. Однако я получаю тысячи ошибок компиляции. Не могли бы вы сказать, какую версию Clang или Objective-C он поддерживает? Потому что мой код был написан примерно в 1995 году. Я подозреваю несоответствие версий.
Если он написан примерно в 1995 году, лучше переписать весь код, чем улучшать существующий. После 1995 года произошли серьезные изменения, особенно в компиляторах и IDE. Пример: ARC представлен компилятором LLVM 3.0.
К сожалению, у нас не так много времени, чтобы переписать код. Что касается ARC, сейчас мало что имеет смысл. Я постоянно получаю несколько ошибок, связанных с этим ARC.
вы можете отключить ARC требуется.
1995? Вам обязательно нужно отключить ARC. Ваши классы, по крайней мере, наследуются от NSObject или они наследуются от старого суперкласса Object? Если второе... с сегодняшними компиляторами это будет сложно.
Они наследуются от NSObject. Как отключить ARC. Есть ли способ заставить современный компилятор работать в предыдущей версии, используя какой-то флаг или что-то в этом роде?
Обычно он превращается в на через флаг -fobjc-arc для clang. Его можно отключить с помощью флага -fno-objc-arc (иногда это требуется для определенных файлов, которые переопределяют значение по умолчанию). Я не знаю, используете ли вы clang — я не знаком с проектом WinObjC. Если это код NSObject, то, как я думаю, сегодня он должен хорошо компилироваться в режиме без ARC. Будет ряд методов, которые устарели и в паре мест удалены, но большинство методов в классах все еще существуют сегодня.
Я нашел демо [здесь] (youtube.com/watch?v=nK0SaMbuwrQ&t=1842s), которое будет вам полезно. Вся идея состоит в том, чтобы повторно использовать объектный код C, разработанный для iOS, при разработке приложений для универсальной платформы Windows (UWP). Я также не смог найти точных шагов.