Objective-C Dla Windows

Jaki byłby najlepszy sposób napisania Objective-C na platformie Windows?

Cygwin i gcc? Czy jest jakiś sposób na zintegrowanie tego w Visual Studio?

Wzdłuż tych linii - czy są jakieś sugestie, jak połączyć się i używać Windows SDK do czegoś takiego. To inna bestia, ale wiem, że mogę pisać montaż i link w bibliotekach DLL Windows, dając mi dostęp do tych połączeń, ale nie wiem, jak to zrobić bez googlowania i uzyskiwania fragmentaryczne wskazówki.

Czy ktoś zna dobry zasób internetowy lub książkowy do robienia lub wyjaśniania tego typu rzeczy?

Author: Cœur, 2008-09-11

13 answers

Rozszerzając dwie poprzednie odpowiedzi, jeśli chcesz Objective-C, ale nie którąkolwiek z frameworków Cocoa, to gcc będzie działać na dowolnej platformie. Możesz go użyć przez Cygwin lub uzyskać MinGW. Jeśli jednak chcesz frameworków Cocoa, lub przynajmniej ich rozsądny podzbiór, to GNUStep i Cocotron są twoimi najlepszymi zakładami.

Cocotron implementuje wiele rzeczy, których GNUStep nie robi, takich jak CoreGraphics i CoreData, choć nie mogę ręczyć za kompletną ich implementację na konkretne ramy. Ich celem jest, aby Cocotron był na bieżąco z najnowszą wersją OS X, tak aby każdy realny program OS X mógł działać w systemie Windows. Ponieważ GNUStep zazwyczaj korzysta z najnowszej wersji gcc, dodaje również wsparcie dla Objective-C++ i wiele funkcji Objective-C 2.0.

Nie testowałem tych funkcji z GNUStep, ale jeśli użyjesz wystarczająco nowej wersji gcc, możesz z nich korzystać. Kilka lat temu nie byłem w stanie używać Objective-C++ z GNUStep. Jednak GNUStep kompiluje się z niemal każdej platformy. Cocotron jest projektem bardzo zorientowanym na mac. Chociaż prawdopodobnie możliwe jest skompilowanie go na innych platformach, chodzi o pliki projektu Xcode, a nie Pliki Makefile, więc możesz kompilować tylko jego frameworki po wyjęciu z pudełka na OS X. Zawiera również instrukcje dotyczące kompilowania aplikacji systemu Windows na XCode, ale nie na żadnej innej platformie. Zasadniczo prawdopodobnie możliwe jest skonfigurowanie środowiska programistycznego dla systemu Windows dla Cocotron, ale nie jest to tak proste, jak ustawienie jednego GNUstep jest idealnym rozwiązaniem, jeśli tworzysz go w systemie Windows, a nie tylko dla Windows.

Cocotron jest licencjonowany na licencji MIT, a GNUStep na licencji LGPL.
 146
Author: Michael Buckley,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-01-27 19:09:05

Ty możesz używać Objective C wewnątrz środowiska Windows. Jeśli wykonasz te kroki, powinno to działać dobrze:

    [19]}odwiedź stronę GNUstep i pobierz GNUstep MSYS Subsystem (MSY dla GNUstep), GNUstep Core (biblioteki dla GNUstep) i GNUstep Devel
  1. Po pobraniu tych plików, zainstaluj w tej kolejności, lub będziesz miał problemy z konfiguracją
  2. przejdź do C:\GNUstep\GNUstep\System\Library\Headers\Foundation1 i upewnić się, że Foundation.h istnieje
  3. Otwórz wiersz polecenia i Uruchom gcc -v, aby sprawdzić, czy GNUstep MSYS jest poprawnie zainstalowany (Jeśli pojawi się błąd file not found, upewnij się, że folder bin z GNUstep MSYS znajduje się w twoim PATH)
  4. Aby przetestować funkcjonalność GNUstep, Użyj tego prostego programu "Hello World":]}
    #include <Foundation/Foundation.h>
    
    int main(void)
    {
        NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
        NSLog(@"Hello World!.");
        [pool drain];
     return;
    }
    
  5. Wróć do wiersza polecenia i cd do miejsca, w którym zapisałeś program "Hello World", a następnie skompiluj go: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
    
  6. Na koniec, w wierszu polecenia wpisz helloworld, aby uruchomić it

Wszystkiego Najlepszego i baw się z Objective-C!


Uwagi:

  1. użyłem domyślnej ścieżki instalacji-dostosuj odpowiednio linię poleceń
  2. upewnij się, że ścieżka folderu jest podobna do mojej, w przeciwnym razie pojawi się błąd
 89
Author: teshguru,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-05-13 00:47:14

Także:

Cocotron to projekt open source, którego celem jest implementacja wieloplatformowego API Objective-C podobnego do opisanego przez Apple Inc.dokumentacja kakao. Obejmuje to AppKit, Foundation, Objective-C runtime i API wsparcia, takie jak CoreGraphics i CoreFoundation.

Http://www.cocotron.org/

 13
Author: amrox,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-11 18:26:08

WinObjC? Windows Bridge Dla iOS (wcześniej znany jako "Project Islandwood").

Windows Bridge for iOS (znany również jako WinObjC) jest projektem Microsoft open source, który zapewnia środowisko programistyczne Objective-C dla Visual Studio / Windows. Ponadto WinObjC zapewnia obsługę zgodności z iOS API. Podczas gdy ostateczna wersja nastąpi jeszcze tej jesieni (pozwalając mostowi skorzystać z nowych możliwości narzędzi, które zostaną dostarczone wraz z nadchodzącym Visual Studio 2015 Update),

Most jest dostępny dla społeczności open-source w obecnym stanie. Od teraz do jesieni. IOS bridge jako projekt open-source na licencji MIT. Biorąc pod uwagę ambicje projektu, ułatwiając programistom iOS tworzenie i uruchamianie aplikacji w systemie Windows.

Salmaan Ahmed ma dogłębny post na mostku Windows dla iOS http://blogs.windows.com/buildingapps/2015/08/06/windows-bridge-for-ios-lets-open-this-up / omawianie kompilatora, runtime, integracja z IDE i czym jest bridge, a czym nie jest. co najlepsze, kod źródłowy dla iOS bridge jest obecnie dostępny na Githubie .

IOS bridge obsługuje zarówno Aplikacje Windows 8.1 i Windows 10 zbudowane dla architektur procesorów x86 i x64, a wkrótce dodamy optymalizacje kompilatorów i wsparcie dla ARM, który dodaje wsparcie dla urządzeń mobilnych.

 13
Author: Lee Stott,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-08-10 21:12:24

Mam mieszane uczucia co do projektu Cocotron. Cieszę się, że wypuszczają kod źródłowy i dzielą się, ale nie czuję, że robią rzeczy w najprostszy sposób.

Przykłady.
Apple udostępniło kod źródłowy do objective-C runtime , który zawiera właściwości i usuwanie śmieci. Projekt Cocotron ma jednak własną implementację runtime objective-C. Po co powielać wysiłek? Istnieje nawet Plik projektu Visual Studio, który może być wykorzystane do zbudowania obiektu.plik dll. Lub jeśli jesteś naprawdę leniwy, możesz po prostu skopiować plik DLL z instalacji Safari w systemie Windows.

Nie zawracali sobie również głowy wykorzystywaniem CoreFoundation, który jest również open source ' em firmy Apple. Wysłałem pytanie na ten temat, ale nie otrzymałem odpowiedzi.

Myślę, że obecnie najlepszym rozwiązaniem jest pobranie kodu źródłowego z wielu źródeł (Apple, cocotron, GnuStep) i połączenie go ze sobą do tego, czego potrzebujesz. Będziesz musiał przeczytać dużo źródło, ale będzie to warte efektu końcowego.

 9
Author: Matthieu Cormier,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-11-05 20:01:51

Zdaję sobie sprawę, że to bardzo stary post, ale znalazłem rozwiązanie, które dopiero niedawno stało się dostępne i umożliwia prawie wszystkie funkcje Objective-C 2.0 na platformie Windows.

Wraz z pojawieniem się gcc 4.6, wsparcie dla funkcji języka Objective-C 2.0 (bloki, składnia kropek, syntetyzowane właściwości itp.) zostało dodane do kompilatora Objective-C (zobacz uwagi do wydania aby uzyskać szczegółowe informacje). Ich środowisko uruchomieniowe zostało również zaktualizowane, aby działało prawie identycznie jak własne Apple Objective - C 2.0 runtime. W skrócie oznacza to, że (prawie) każdy program, który legalnie skompiluje się z Clang na Macu, również skompiluje się z gcc 4.6 bez modyfikacji.

Na marginesie, jedną z funkcji, która nie jest dostępna, jest literały dictionary / array / etc, ponieważ wszystkie są zakodowane w Clang, aby używać klas Apple Nsdictionary, nsArray, nsnumber, etc.

Jednakże, jeśli jesteś szczęśliwy, że żyjesz bez rozbudowanych frameworków Apple, możesz. Jak zaznaczono w innych odpowiedziach, GNUStep i Cocotron dostarcza zmodyfikowane wersje bibliotek klas Apple, lub możesz napisać własne (moja preferowana opcja).

MinGW jest jednym ze sposobów na uzyskanie GCC 4.6 na platformie Windows i można go pobrać z strony internetowej MinGW. Upewnij się, że podczas instalacji dołączasz instalację C, C++, Objective-C i Objective-C++. Chociaż opcjonalne, sugerowałbym również zainstalowanie środowiska MSYS.

Po zainstalowaniu można skompilować źródło Objective-C 2.0 z:

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

MinGW zawiera również wsparcie dla kompilacji natywnych aplikacji GUI Windows z flagą -mwindows. Na przykład:

g++ -mwindows MyFile.cpp

Nie próbowałem tego jeszcze, ale wyobrażam sobie, że jeśli zawijasz swoje klasy Objective-C w Objective-C++ na najwyższej możliwej warstwie, powinieneś być w stanie z powodzeniem przeplatać natywne GUI C++ i Objective-C w jednej aplikacji Windows.

 8
Author: Ephemera,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-10-12 03:48:44

Sprawdź WinObjC:

Https://github.com/Microsoft/WinObjC

To oficjalny, open-source projekt firmy Microsoft, który integruje się z Visual Studio + Windows.

 7
Author: James Ko,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-11-03 16:24:23

Jeśli chcesz po prostu eksperymentować, istnieje kompilator Objective-C dla. NET (Windows) tutaj: qckapp

 6
Author: user397362,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-06-20 06:07:18

Możesz uzyskać kompilator objective c, który będzie działał z systemem Windows i dobrze się bawi w Visual Studio 2008\2010 tutaj.

Open - C flite

Wystarczy pobrać najnowsze źródło. Nie musisz budować całego CF-Lite istnieje rozwiązanie o nazwie objc.sln. Będziesz musiał naprawić kilka ścieżek dołączania, ale wtedy będzie to dobrze budować. Jest nawet projekt testowy, więc można zobaczyć jakiś objective-c .pliki M są kompilowane i pracują w visual studio. Jedna smutna rzecz czy działa tylko z Win32 nie x64. Istnieje pewien kod asemblera, który musiałby być napisany dla x64, aby mógł to obsługiwać.

 5
Author: Aaron Stainback,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-06-20 06:08:40

Ostatnią próbą portowania Objective C 2.0 do Windows jest projekt subiektywny .

Z Readme:

Subiektywna jest próbą wprowadzenia Objective C 2.0 z obsługą ARC do Okna.

Ten projekt jest rozwidleniem objc4-532.2, runtime Objective C, które statki z OS X 10.8.5. Port można skompilować na OS X za pomocą llvm-clang połączony z łącznikiem MinGW.

Istnieją pewne ograniczenia, z których wiele jest kwestią extra pracy, podczas gdy inne, takie jak wyjątki i bloki, zależą od większej poważna praca w projektach stron trzecich. Ograniczenia to:

• 32-bit only - 64-bit jest w toku

* tylko linkowanie statyczne - trwa dynamiczne linkowanie

* Brak zamknięć / bloków-dopóki libdispatch nie obsługuje ich w systemie Windows

• Bez WYJĄTKÓW-dopóki clang nie obsługuje ich w Windows

• No old style GC-until someone cares...

• wewnętrzne: brak vtables, brak obsługi gdb, tylko zwykły malloc, nie preoptymizacje - część z tych rzeczy będzie dostępna pod 64-bitowa Budowa.

• Obecnie wymagany jest skompilowany kompilator clang; łata dodaje -fobjc-runtime=subj flag

Projekt jest dostępny na Github, Istnieje również wątek na grupie Cocotron opisujący niektóre z napotkanych postępów i problemów.

 4
Author: insys,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-06-01 15:23:36

Pobierz GNUStep tutaj

Pobierz MINGW tutaj

Zainstaluj MINGW Zainstaluj GNUStep Następnie Test

 2
Author: raksa eng,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-12-20 13:53:42

Jeśli czujesz się komfortowo w środowisku Visual Studio,

Mały projekt: jGRASP z gcc Duży projekt: Cocotron

Słyszałem, że są emulatory, ale mogłem znaleźć tylko emulator Apple II http://virtualapple.org / . wygląda na to, że ogranicza się do gier.

 0
Author: Cloud Cho,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-02-28 01:34:28

Po pierwsze, zapomnij o narzędziach GNUStep. Ani ProjectManager ani ProjectCenter nie mogą być nazywane IDE. Z całym szacunkiem, wygląda na to, że chłopaki z projektu GNUStep utknęli w późnych latach 80 - tych (wtedy pojawił się NeXTSTEP ).

Vim

ctags wsparcie Objective - C od r771 (pamiętaj, aby wybrać wersję 5.9 i dodać --langmap=ObjectiveC:.m.h do wiersza poleceń, zobacz tutaj ), więc będziesz miał porządny kod zakończenie / tag nawigacja.

Oto krótki howto na temat dodawania wsparcia Objective - C do wtyczki vim tagbar.

Emacs

To samo dotyczy etags dostarczanych z nowoczesnym Emacsen, więc możesz zacząć od Emacsa Objective C Mode . YASnippet dostarczy użytecznych szablonów:

YASnippet objc-mode

A jeśli chcesz czegoś bardziej inteligentnego niż Basic tags-based code completion , spójrz na to pytanie .

Eclipse

CDT obsługuje projekty oparte na bazie Makefile:

Tutaj wpisz opis obrazka

-- więc technicznie możesz budować swoje projekty Objective-C od razu (w systemie Windows będziesz potrzebował Cygwin lub MinGW toolchain). Jedynym problemem jest edytor kodu, który zgłosi mnóstwo błędów w stosunku do tego, co uważa za czysty kod C (sprawdzanie kodu w locie może być wyłączone, ale i tak...). Jeśli chcesz mieć poprawną składnię podświetlenie, możesz dodać Eclim do swojego Eclipse i cieszyć się wszystkimi dobrymi funkcjami zarówno Eclipse , jak i Vim (patrz wyżej).

Kolejną obiecującą wtyczką Eclipse jest Colorer , ale nie obsługuje jeszcze Objective-C. Możesz jednak złożyć wniosek o funkcję.

SlickEdit

SlickEdit , wśród innych funkcji Wielkiego IDE, robi wsparcie Objective-C. Chociaż jest to dość złożony do nauki (nie tak złożony jak Emacs), uważam, że jest to najlepsza opcja, pod warunkiem, że nie masz nic przeciwko zakupowi (cena jest dość przystępna).

Dodatkowo posiada wtyczkę Eclipse , która może być używana jako alternatywa dla samodzielnego edytora.

KDevelop

Plotka głosi, że istnieje KDevelop patch (15 lat, ale kogo to obchodzi?). Osobiście nie uważam, że KDevelop jest lepszy od Emacsen , więc nie zawracałbym sobie głowy próbowaniem.


Powyższe dotyczy również programowania Objective-C pod Linuksem, ponieważ wszystkie wymienione narzędzia są mniej lub bardziej przenośne.

 0
Author: Bass,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 11:54:34