Цель C для Windows

210

Каким будет лучший способ написать Objective-C на платформе Windows?

Cygwin и gcc? Можно ли каким-то образом интегрировать это в Visual Studio?

Вдоль этих строк - есть ли какие-либо предложения относительно того, как подключиться и использовать Windows SDK для чего-то подобного. Это другой зверь, но я знаю, что могу писать сборку и ссылку в DLL-библиотеках Windows, предоставляя мне доступ к этим вызовам, но я не знаю, как это сделать без поиска и получения по частям направлений.

Кто-нибудь знает о хорошем онлайн-ресурсе или книжном ресурсе, чтобы делать или объяснять такие вещи?

  • 5
    Если вы просто делаете это для iOS, вы можете использовать iOS Build Environment от PM Baty ...
Теги:
gcc
winapi
cygwin

13 ответов

149
Лучший ответ

Развернувшись на двух предыдущих ответах, если вы просто хотите Objective-C, но не какие-либо из фреймворков Cocoa, то gcc будет работать на любой платформе. Вы можете использовать его через Cygwin или получить MinGW. Однако, если вы хотите использовать фреймы Cocoa или, по крайней мере, разумное их подмножество, то ваши лучшие ставки будут GNUStep и Cocotron.

Cocotron реализует много вещей, которые GNUStep не делает, таких как CoreGraphics и CoreData, хотя я не могу ручаться за то, насколько их реализация реализована в определенной структуре. Их цель - обновить Cocotron до последней версии OS X, чтобы любая жизнеспособная программа OS X могла работать в Windows. Поскольку GNUStep обычно использует последнюю версию gcc, они также добавляют поддержку Objective-C ++ и множество функций Objective-C 2.0.

Я не тестировал эти функции с помощью GNUStep, но если вы используете достаточно новую версию gcc, вы можете использовать их. Несколько лет назад я не мог использовать Objective-C ++ с GNUStep. Однако GNUStep компилируется практически из любой платформы. Cocotron - очень макроцентричный проект. Хотя, вероятно, возможно скомпилировать его на других платформах, это файлы проекта XCode, а не make файлы, поэтому вы можете компилировать свои фреймворки из коробки на OS X. Он также содержит инструкции по компиляции приложений Windows на XCode, но не любой другой платформы. В принципе, возможно, возможно настроить среду разработки Windows для Cocotron, но это не так просто, как установить один для GNUStep, и вы будете сами по себе, так что GNUStep определенно подходит, если вы разрабатываете Windows, а не только для Windows.

Для чего это стоит, Cocotron лицензируется по лицензии MIT, а GNUStep лицензируется под LGPL.

  • 0
    Вы всегда можете перенести фреймворки Какао с открытым исходным кодом. Примером является CoreFoundation.
  • 0
    Не все Core Foundation IS с открытым исходным кодом. Огромное количество закрытого источника.
Показать ещё 2 комментария
84

Вы можете использовать Objective C в среде Windows. Если вы выполните следующие шаги, он должен работать нормально:

  • Посетите веб-сайт GNUstep и загрузите GNUstep MSYS Subsystem (MSYS для GNUstep), GNUstep Core (Библиотеки для GNUstep) и GNUstep Devel
  • После загрузки этих файлов установите в этом порядке или у вас возникнут проблемы с конфигурацией
  • Перейдите к C:\GNUstep\GNUstep\System\Library\Headers\Foundation 1 и убедитесь, что Foundation.h существует
  • Откройте командную строку и запустите gcc -v, чтобы проверить правильность установки GNUstep MSYS (если вы получили ошибку, не найденную в файле, убедитесь, что папка bin GNUstep MSYS находится в вашем PATH).
  • Используйте эту простую программу "Hello World" для тестирования функций GNUstep:

    #include <Foundation/Foundation.h>
    
    int main(void)
    {
        NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
        NSLog(@"Hello World!.");
        [pool drain];
     return;
    }
    
  • Вернитесь в командную строку и cd туда, где вы сохранили программу Hello World, а затем скомпилируйте ее: 2

    gcc -o helloworld.exe <HELLOWORLD>.m -I /GNUstep/GNUstep/System/Library/Headers -L /GNUstep/GNUstep/System/Library/Libraries -std=c99 -lobjc -lgnustep-base -fconstant-string-class=NSConstantString
    
  • Наконец, в командной строке введите helloworld, чтобы запустить его

Все самое лучшее и получайте удовольствие от Objective-C!


ПРИМЕЧАНИЯ

  • Я использовал путь установки по умолчанию - отрегулируйте вашу командную строку соответственно
  • Убедитесь, что ваш путь к папке похож на мой, иначе вы получите сообщение об ошибке
  • 1
    Эта предложенная установка не работала на моем ПК, потому что я уже установил gcc, который я использовал для nasm. Поэтому я просто исправил gcc -o helloworld... в c:\gnustep\bin\gcc -o helloworld... и это сработало. Альтернативой было бы изменить переменные окружения, чего я не делал, так как я просто осматривал цель C. Спасибо teshguru за точный ответ.
  • 0
    Попробуйте удалить форматирование кода вокруг имен вещей. GNUstep MYSY - это не код, это просто название программного обеспечения. Если вы хотите, чтобы что-то выделялось, возможно, стоит ободрить это? И если что-то подключается к тегу, рассмотрите возможность использования разделителей тегов, но не должно быть никаких оснований для добавления имен в разделители тегов.
Показать ещё 1 комментарий
13

также:

Cocotron - проект с открытым исходным кодом, целью которого является реализация кросс-платформенного API Objective-C, аналогичного описанному в документации Apple Inc. Cocoa. Сюда входят AppKit, Foundation, Objective-C среда выполнения и поддерживающие API, такие как CoreGraphics и CoreFoundation.

http://www.cocotron.org/

  • 4
    Проект Cocotron разработан для кросс-компиляции из XCode, а не написан для Windows и скомпилирован там.
  • 2
    это не хороший ответ, я даже не уверен, почему OP выбрал это как «ответ», потому что CoCotron для Mac, а OP хочет решение на базе Windows.
Показать ещё 1 комментарий
12

WinObjC? Windows Bridge для iOS (ранее известный как "Project Islandwood" ).

Windows Bridge для iOS (также называемый WinObjC) - это проект с открытым исходным кодом Microsoft, который обеспечивает среду разработки Objective-C для Visual Studio/Windows. Кроме того, WinObjC обеспечивает поддержку совместимости с API iOS. Хотя окончательная версия будет происходить позже этой осенью (позволяя мосту использовать новые возможности инструментария, которые будут поставляться с предстоящим обновлением Visual Studio 2015),

Мост доступен сообществу с открытым исходным кодом в текущем состоянии. Между теперь и падением. Мост iOS как проект с открытым исходным кодом под лицензией MIT. Учитывая амбиции проекта, чтобы разработчики iOS легко могли создавать и запускать приложения в Windows.

Сальмаан Ахмед имеет углубленное сообщение на Windows Bridge для iOS http://blogs.windows.com/buildingapps/2015/08/06/windows-bridge-for-ios-lets-open-this-up/, обсуждая компилятор, среду выполнения, интеграцию с IDE и то, что такое мост, и isnt, Лучше всего, исходный код моста iOS находится в прямом эфире на GitHub прямо сейчас.

Мост iOS поддерживает как приложения Windows 8.1, так и Windows 10, созданные для архитектуры процессоров x86 и x64, и вскоре мы добавим оптимизацию компилятора и поддержку ARM, которая добавит мобильную поддержку.

9

У меня смешанные чувства по поводу проекта Cocotron. Я рад, что они выпускают исходный код и разделяют, но я не чувствую, что они делают все проще.

Примеры.
Apple выпустила исходный код objective-c runtime, который включает в себя свойства и сбор мусора. Однако проект Cocotron имеет собственную реализацию среды выполнения objective-c. Зачем пытаться дублировать усилия? Существует даже файл проекта Visual Studio, который можно использовать для сборки файла objc.dll. Или, если вы действительно ленивы, вы можете просто скопировать DLL файл из установки Safari в Windows.

Они также не потрудились использовать CoreFoundation, которая также открыта Apple. Я отправил вопрос об этом, но не получил ответа.

Я думаю, что лучшим в настоящее время решением является использование исходного кода из нескольких источников (Apple, CocoTron, GnuStep) и объединение его в то, что вам нужно. Вам нужно будет прочитать много источников, но это будет стоить конечного результата.

  • 2
    Извините, что не ответили на ваш вопрос о группе, резюмируя: APSL отстой, и среда выполнения и CF находятся под ними.
  • 1
    Что отстой в APSL? ( opensource.apple.com/license/apsl ) Это не агрессивно, как GPL. Если вы изменяете покрытый код, вы должны сделать этот код доступным. Покрываемый код - это любые изменения, которые вы вносите, например, в CoreFoundation, но не будут включать вашу настоящую программу. Вам также необходимо четко пометить ваши модификации. Это неудобство, но стоит компромисса с использованием проверенного кода Apple, не так ли?
Показать ещё 6 комментариев
7

Я знаю, что это очень старое сообщение, но я нашел решение, которое появилось только недавно, и позволяет почти все функции Objective-C 2.0 на платформе Windows.

С появлением gcc 4.6 в компилятор Objective-C добавлена ​​поддержка функций языка Objective-C 2.0 (блоки, синтаксис точек, синтезированные свойства и т.д.) (см. примечания к выпуску для получения полной информации). Их среда выполнения также была обновлена, чтобы работать почти идентично с собственной версией Objective-C 2.0 Apple. Короче говоря, это означает, что (почти) любая программа, которая будет законно компилироваться с Clang на Mac, также будет компилироваться с gcc 4.6 без изменений.

В качестве побочной заметки одна функция, которая недоступна, - это словарные/массивные/и т.д., поскольку все они жестко закодированы в Clang для использования классов Apple NSDictionary, NSArray, NSNumber и т.д.

Однако, если вы счастливы жить без обширных фреймворков Apple, вы можете. Как отмечалось в других ответах, GNUStep и Cocotron предоставляют модифицированные версии библиотек классов Apple, или вы можете написать свой собственный (мой предпочтительный вариант).

MinGW - это один из способов получить GCC 4.6 на платформе Windows и может быть загружен из веб-сайта MinGW. Убедитесь, что при его установке вы включаете установку C, С++, Objective-C и Objective-C ++. Хотя это необязательно, я также предлагаю установить среду MSYS.

После установки источник Objective-C 2.0 можно скомпилировать с помощью:

gcc MyFile.m -lobjc -std=c99 -fobjc-exceptions -fconstant-string-class=clsname (etc, additional flags, see documentation)

MinGW также включает поддержку для компиляции собственных приложений Windows с графическим интерфейсом с флагом -mwindows. Например:

g++ -mwindows MyFile.cpp

Я еще не пытался это сделать, но я предполагаю, что если вы завернете классы Objective-C в Objective-C ++ на максимально возможном уровне, вы сможете успешно переплетать собственный графический интерфейс Windows С++ и Objective-C все в одно приложение Windows.

6

Проверьте WinObjC:

https://github.com/Microsoft/WinObjC

Это официальный проект с открытым исходным кодом от Microsoft, который интегрируется с Visual Studio + Windows.

6

Если вы просто хотите экспериментировать, здесь есть компилятор Objective-C для .NET(Windows): qckapp

  • 0
    спасибо. это поможет мне. большое спасибо .....
  • 0
    эта программа не может быть скомпилирована с помощью osc. # import <Foundation / Foundation.h> int main (int argc, const char * argv []) {NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init]; NSLog (@ ”Тестирование ... \ n..1 \ n ... 2 \ n .... 3”); [сток бассейна]; вернуть 0; }
5

Вы можете получить объективный компилятор c, который будет работать с Windows и играть с Visual Studio 2008\2010 здесь.

open-c flite

Просто загрузите последний источник. Вам не нужно создавать все CF-Lite, есть решение, называемое objc.sln. Вам нужно будет исправить несколько включенных путей, но потом он будет просто отлично. Существует даже тестовый проект, поэтому вы можете увидеть, как файлы objective-c.m компилируются и работают в visual studio. Одна печальная вещь заключается в том, что она работает только с Win32, а не с x64. Существует некоторый код сборки, который нужно будет записать для x64, чтобы он поддерживал это.

  • 0
    Я скачал и запустил этот проект с использованием Visual Studio 2013 и получил 30 экземпляров этой ошибки. Ошибка 64 ошибка C2632: «char», за которым следует «bool», является недопустимым C: \ opencflite-code-248-trunk \ include \ c99 \ stdbool.h 20 1 objc
4

Недавняя попытка переноса Objective C 2.0 в Windows - проект Subjective.

Из Readme:

Субъективная - попытка принести Objective C 2.0 с поддержкой ARC Windows.

Этот проект представляет собой fork objc4-532.2, время выполнения Objective C, которое корабли с OS X 10.8.5. Порт можно скомпилировать по OS X, используя llvm-clang в сочетании с компоновщиком MinGW.

Существуют определенные ограничения, многие из которых являются дополнительными работа, в то время как другие, такие как исключения и блоки, зависят от большего количества серьезная работа в сторонних проектах. Ограничения:

• Только 32-разрядная битка - 64-разрядная версия

• Только статическая привязка - выполняется динамическое связывание

• Без закрытий/блоков - пока libdispatch не поддерживает их в Windows

• Без исключений - пока clang не поддерживает их в Windows

• Нет старого стиля GC - пока кто-то не заботится...

• Внутренние: нет vtables, поддержка gdb, просто malloc, no преоптимизации - некоторые из этих вещей будут доступны в рамках 64-битная сборка.

• В настоящее время требуется исправленный компилятор clang; патч добавляет -fobjc-runtime = флаг subj

Проект доступен на Github, а также есть thread в группе Cocotron, в которой излагаются некоторые проблемы и проблемы.

2

Получить GNUStep здесь

Получить MINGW здесь

Установите MINGW  Установка GNUStep  Затем Test

0

Прежде всего, забудьте о инструментах GNUStep. Ни ProjectManager, ни ProjectCenter можно назвать IDE. При всем уважении, похоже, что ребята из проекта GNUStep застряли в конце 80-х (когда впервые появился NeXTSTEP).

Vim

ctags поддержка Objective-C с r771 (обязательно выберите версию выпуска до версии 5.9 и добавьте --langmap=ObjectiveC:.m.h в командной строке, см. здесь), поэтому у вас будет достойная навигация по завершению/тегу кода.

Вот короткий howto при добавлении поддержки Objective-C к плагину Vim tagbar.

Emacs

То же самое относится к etags, поставляемому с современным Emacsen, поэтому вы можете начать с Emacs Objective C Mode. YASnippet предоставит полезные шаблоны:

Изображение 6520

и если вы хотите что-то более интеллектуальное, чем базовое завершение кода на основе тегов, взгляните на это question.

Затмение

CDT поддерживает Makefile -проектные проекты:

Изображение 6521

- так технически вы можете строить свои проекты Objective-C из коробки (в Windows вам понадобится инструментальная цепочка Cygwin или MinGW). Единственная проблема - редактор кода, который будет сообщать о большом количестве ошибок в отношении того, что, по его мнению, является чистым C-кодом (проверка кода "на лету" может быть отключена, но все же...). Если вам нужна правильная подсветка синтаксиса, вы можете добавить Eclim в свой Eclipse и наслаждаться всеми хорошими функциями как Eclipse, так и Vim (см. Выше).

Другим перспективным плагином Eclipse является Colorer, но он пока не поддерживает Objective-C. Не стесняйтесь записывать запрос функции.

SlickEdit

SlickEdit, среди другие функции большой IDE, делает support Objective-C. Хотя это довольно сложно, чтобы учиться (но не так сложно, как Emacs), я считаю, что это ваш лучший вариант, если вы не против его покупки (цена вполне доступная).

Кроме того, он имеет плагин Eclipse, который может использоваться как альтернатива автономному редактору.

KDevelop

По слухам, существует KDevelop патч (15 лет, но кому это нужно?). Я лично не думаю, что KDevelop является превосходным по сравнению с Emacsen, поэтому я бы не стал его пытаться.


Вышеупомянутое также относится к разработке Objective-C в Linux, поскольку все упомянутые инструменты более или менее переносимы.

0

Если вам нравится среда Visual Studio,

Малый проект: jGRASP с gcc Большой проект: Cocotron

Я слышал, что есть эмуляторы, но я мог найти только эмулятор Apple II http://virtualapple.org/. Это похоже на игры.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню