programing

Windows용 Objective-C

abcjava 2023. 4. 11. 21:37
반응형

Windows용 Objective-C

Windows 플랫폼에서 Objective-C를 쓰는 가장 좋은 방법은 무엇입니까?

시그윈과 gcc?Visual Studio에 통합할 수 있는 방법이 있나요?

이와 관련하여 Windows SDK에 연결하여 이와 같은 용도로 사용하는 방법에 대한 제안 사항이 있습니까?다른 방법이지만 Windows DLL에서 어셈블리와 링크를 쓸 수 있기 때문에 이러한 콜에 액세스 할 수 있다는 것은 알고 있습니다만, 검색이나 단편적인 지시를 받지 않고는 이 방법을 알 수 없습니다.

이런 것들을 설명하거나 하기 위한 좋은 온라인 자료나 서적 자료를 알고 있는 사람이 있나요?

앞의 두 가지 답변에 대해 자세히 설명하자면, 코코아 프레임워크가 아닌 Objective-C만 원하는 경우 gcc는 모든 플랫폼에서 작동합니다.Cygwin을 통해 이용하거나 MinGW를 받을 수 있습니다.하지만, 만약 당신이 코코아 프레임워크 또는 적어도 그들 중 합리적인 서브셋을 원한다면, GNUStep과 Cocotron이 당신의 최선의 선택입니다.

Cocotron은 CoreGraphics나 CoreData와 같이 GNUStep이 구현하지 않은 많은 것들을 구현하고 있지만, 특정 프레임워크에서 구현이 얼마나 완료되었는지는 장담할 수 없습니다.그들의 목표는 실행 가능한 모든 OS X 프로그램을 Windows에서 실행할 수 있도록 Cocotron을 최신 버전의 OS X로 최신 상태로 유지하는 것입니다.GNUStep은 일반적으로 최신 버전의 gcc를 사용하기 때문에 Objective-C++ 및 많은 Objective-C 2.0 기능을 지원합니다.

GNUStep에서는 테스트하지 않았지만, 새로운 버전의 gcc를 사용하면 사용할 수 있을지도 모릅니다.몇 년 전 GNUStep에서는 Objective-C++를 사용할 수 없었습니다.그러나 GNUStep은 거의 모든 플랫폼에서 컴파일합니다.코코트론은 매우 맥중심적인 프로젝트입니다.다른 플랫폼에서는 컴파일이 가능하지만 make files가 아닌 XCode 프로젝트 파일을 제공하므로 OS X에서는 기본 컴파일만 할 수 있습니다.또한 XCode에서 Windows 앱을 컴파일하는 방법에 대한 설명도 함께 제공되지만 다른 플랫폼에서는 제공되지 않습니다.기본적으로는 Cocotron용 Windows 개발 환경을 설정하는 것은 가능하지만 GNUStep용 Windows 개발 환경 설정만큼 쉽지 않으며, 독자적으로 개발해야 하므로 Windows에서만 개발하는 것이 아니라 Windows에서 개발한다면 GNUStep을 사용하는 것이 좋습니다.

Cocotron은 MIT 라이선스로, GNUStep은 LGPL 라이선스로 라이선스를 취득했습니다.

윈도우즈 환경 내에서 목표 C를 사용할 수 있습니다.다음의 순서를 실행하면, 정상적으로 동작합니다.

  1. GNUstep 웹사이트에 접속하여 다운로드 합니다.GNUstep MSYS Subsystem GNUstep (GNU의 MSYS),GNUstep CoreGNUstep용 ) 및 (GNUstep용 라이브러리),GNUstep Devel
  2. 이러한 파일을 다운로드한 후, 그 순서로 인스톨 해 주세요.그렇지 않으면, 설정에 문제가 생깁니다.
  3. 를 해 .C:\GNUstep\GNUstep\System\Library\Headers\Foundation1 확실하게 할 수고를 덜 수 있도록 해 주세요.Foundation.h
  4. " " " 를 실행합니다.gcc -v GNUstep MSYS인스톨 되어 있는 에러가 는, 「file not found」(파일을 찾을 수 없습니다)가 있는 것을 .bin of GNUstep MSYS 안에 요.PATH)
  5. 이 간단한 "Hello World" 프로그램을 사용하여 GNUstep의 기능을 테스트합니다.

    #include <Foundation/Foundation.h>
    
    int main(void)
    {
        NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
        NSLog(@"Hello World!.");
        [pool drain];
     return;
    }
    
  6. " " " " "로 돌아갑니다.cd"2Hello World" 프로그램을 저장한 위치로 이동한 후 컴파일합니다.

    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
    
  7. 에서 " " " 라고 합니다.helloworld

Objective-C와 즐거운 시간 보내세요!


주의:

  1. 기본 설치 경로를 사용했습니다. 그에 따라 명령줄을 조정하십시오.
  2. 폴더 경로가 내 경로와 유사함을 확인하십시오. 그렇지 않으면 오류가 발생합니다.

기타:

Cocotron은 Apple Inc.의 코코아 문서에 기술된 것과 유사한 크로스 플랫폼 Objective-C API를 구현하는 것을 목표로 하는 오픈 소스 프로젝트입니다.여기에는 AppKit, Foundation, Objective-C 런타임 및 CoreGraphics, CoreFoundation 등의 지원 API가 포함됩니다.

http://www.cocotron.org/

WinObjC?iOS용 Windows Bridge(이전의 '프로젝트 아일랜드우드').

Windows Bridge for iOS(WinObjC라고도 함)는 Visual Studio/Windows용 Objective-C 개발 환경을 제공하는 마이크로소프트의 오픈 소스 프로젝트입니다.또한 WinObjC는 iOS API 호환성을 지원합니다.최종 릴리스는 올 가을 후반에 발표될 예정이지만(브릿지는 곧 출시될 Visual Studio 2015 Update와 함께 제공되는 새로운 툴링 기능을 활용할 수 있습니다),

브릿지는 현재 상태로 오픈소스 커뮤니티에서 사용할 수 있습니다.지금부터 가을까지.MIT 라이선스에 따른 오픈소스 프로젝트로서의 iOS 브리지.프로젝트의 포부를 고려하면 iOS 개발자는 Windows 상에서 앱을 쉽게 구축하고 실행할 수 있습니다.

Salmaan Ahmed는 Windows Bridge for iOS http://blogs.windows.com/buildingapps/2015/08/06/windows-bridge-for-ios-lets-open-this-up/에 컴파일러, 런타임, IDE 통합, 브릿지 기능 및 기능에 대해 자세히 설명하고 있습니다.무엇보다도 iOS 브릿지의 소스 코드는 현재 GitHub에서 라이브입니다.

iOS 브릿지는 x86 및 x64 프로세서 아키텍처용으로 구축된 Windows 8.1 및 Windows 10 애플리케이션을 모두 지원하며 조만간 컴파일러 최적화와 모바일 지원을 추가하는 ARM 지원을 추가할 예정입니다.

나는 코코트론 프로젝트에 대해 복잡한 감정을 가지고 있다.그들이 소스코드를 공개하고 공유한다는 것은 기쁘지만, 나는 그들이 일을 가장 쉽게 하고 있다고 생각하지 않는다.


Apple은 속성 및 가비지 컬렉션을 포함하는 objective-c 런타임에 소스 코드를 릴리스했습니다.그러나 Cocotron 프로젝트는 objective-c 런타임의 자체 구현을 가지고 있다.굳이 노력을 중복하는 이유는 무엇입니까?objc.dll 파일을 작성하기 위해 사용할 수 있는 Visual Studio Project 파일도 있습니다.또는 Windows에 설치된 Safari에서 DLL 파일을 복사할 수도 있습니다.

그들은 또한 애플이 제공하는 오픈 소스인 Core Foundation을 활용하기 위해 노력하지 않았다.이에 대한 질문을 올렸지만 답변을 받지 못했습니다.

현재 최선의 해결책은 여러 소스(Apple, CocoTron, GnuStep)에서 소스 코드를 가져와 필요한 것과 결합하는 것이라고 생각합니다.당신은 많은 자료를 읽어야 할 것이지만 최종 결과를 얻을 가치가 있을 것이다.

이 글이 매우 오래된 게시물인 것은 알지만, 저는 최근에야 사용할 수 있게 되었고 Windows 플랫폼에서 거의 모든 Objective-C 2.0 기능을 사용할 수 있는 솔루션을 찾았습니다.

gcc 4.6의 등장과 함께 Objective-C 2.0 언어 기능(블록, 도트 구문, 합성 속성 등) 지원이 Objective-C 컴파일러에 추가되었습니다(자세한 내용은 릴리즈 노트 참조).또, 그 런타임은, Apple 독자적인 Objective-C 2.0 런타임과 거의 비슷하게 동작하도록 갱신되고 있습니다.즉, Mac에서 Clang을 사용하여 합법적으로 컴파일되는 모든 프로그램도 수정 없이 gcc 4.6으로 컴파일됩니다.

참고로 사용할 수 없는 기능 중 하나는 사전/어레이 등의 리터럴입니다.이러한 기능은 모두 Clang에 하드 코딩되어 있기 때문에 Apple의 NSDirectionary, NSAray, NSNumber 등의 클래스를 사용할 수 있습니다.

하지만, 만약 당신이 애플의 광범위한 프레임워크 없이 사는 것이 행복하다면, 당신은 할 수 있다.다른 답변에서 언급했듯이 GNUStep과 Cocotron은 Apple 클래스 라이브러리의 수정 버전을 제공하거나 사용자가 직접 작성할 수 있습니다(내가 선호하는 옵션).

MinGW는 Windows 플랫폼에서 GCC 4.6을 취득하는 방법 중 하나이며 MinGW 웹사이트에서 다운로드할 수 있습니다.C, 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」의 GUI Windows 를 한 네이티브 GUI Windows .-mwindows flag. §:

g++ -mwindows MyFile.cpp

아직 시도하지 않았지만 Objective-C 클래스를 Objective-C++로 가능한 한 높은 레이어에서 래핑하면 네이티브 Windows GUI C++와 Objective-C를 모두 하나의 Windows 응용 프로그램에서 성공적으로 연결할 수 있을 것입니다.

WinObjC를 확인해 주세요.

https://github.com/Microsoft/WinObjC

Microsoft의 공식 오픈 소스 프로젝트로 Visual Studio + Windows와 통합됩니다.

실험하고 싶은 경우 Objective-C 컴파일러 for가 있습니다.NET(Windows): qckapp

Windows 와 연동해, Visual Studio 2008/2010 에 대응한 목적의 c 컴파일러를 입수할 수 있습니다.

오픈씨 플라이트

최신 소스를 다운로드하기만 하면 됩니다.모든 CF-Lite를 구축할 필요는 없습니다.objc.sln이라는 솔루션이 있습니다.몇 가지 포함 경로를 수정해야 하지만 올바르게 구축됩니다.테스트 프로젝트도 포함되어 있기 때문에 몇 가지 objective-c.m 파일이 컴파일되어 비주얼 스튜디오에서 동작하는 것을 볼 수 있습니다.한 가지 아쉬운 점은 x64가 아닌 Win32에서만 작동합니다.이를 지원하려면 x64용으로 작성해야 하는 어셈블리 코드가 있습니다.

최근 Objective C 2.0을 Windows로 이식하려는 시도가 주관적 프로젝트입니다.

Readme에서:

주관적인 것은 ARC를 지원하는 목표 C 2.0을 Windows에 도입하려는 시도입니다.

이 프로젝트는 OS X 10.8.5와 함께 제공되는 Objc4-532.2 런타임의 포크입니다.포트는 llvm-clang을 MinGW 링커와 조합하여 OS X 상에서 크로스 컴파일 할 수 있습니다.

많은 제약이 있지만, 예외나 블록과 같은 다른 것들은 서드파티 프로젝트에서 더 심각한 작업에 의존합니다.제한사항은 다음과 같습니다.

• 32비트만 - 64비트 진행 중

• 정적 링크만 - 동적 링크 진행 중

• 닫힘/차단 없음 - libdispatch가 Windows에서 지원할 때까지

• 예외 없음 - Windows에서 Clang이 지원할 때까지

• 구식 GC 없음 - 누군가 신경 쓸 때까지...

• 내부: vtables, gdb 지원 없음, 플레인 malloc, 사전 최적화 없음 - 이들 중 일부는 64비트 빌드에서 사용할 수 있습니다.

• 현재 패치가 적용된 clang 컴파일러가 필요합니다.패치에 의해 -subjc-subj 플래그가 추가됩니다.

이 프로젝트는 Github에서 이용할 수 있으며, Cocotron Group에도 몇 가지 진행 상황과 문제를 설명하는 스레드가 있습니다.

여기서 GNUStep 가져오기

MINGW는 이쪽

MINGW 설치 GNUStep 설치 후 테스트

Visual Studio 환경에 익숙하다면

소규모 프로젝트: jGRASP with gcc 대형 프로젝트:코코트론

에뮬레이터가 있다고 들었습니다만, Apple II 에뮬레이터 http://virtualapple.org/ 밖에 찾을 수 없었습니다.게임에만 국한된 것 같아요.

우선, GNUStep 툴에 대해서는 잊어 주세요.ProjectManagerProjectCenter도 IDE라고 할 수 없습니다.외람된 말씀이지만, GNUStep 프로젝트의 사람들은 80년대 후반(NextSTEP가 처음 등장한 시점)에 갇혀 있는 것 같습니다.

VIM

ctagsr771 이후 Objective-C를 지원합니다(프리 릴리즈 5.9 버전을 선택하고 추가).--langmap=ObjectiveC:.m.h커맨드 라인에 액세스 할 수 있기 때문에, 적절한 코드 완성/태그 네비게이션을 사용할 수 있습니다.

다음은 Vim 태그바 플러그인에 Objective-C 지원을 추가하는 간단한 방법입니다.

에맥스

경우에도 입니다.etags에는 최신 Emacsen이 포함되어 있으므로 Emacs Objective C 모드로 시작할 수 있습니다.YASnippet은 유용한 템플릿을 제공합니다.

YASnippet objc 모드

기본적인 태그 베이스의 코드 완성보다 인텔리전트한 것을 원한다면, 이 질문을 참조해 주세요.

이클립스

CDT 지원Makefile- 기반 프로젝트:

여기에 이미지 설명 입력

--기술적으로는 Objective-C 프로젝트를 바로 구축할 수 있습니다(Windows에서는 Cygwin 또는 MinGW 툴체인이 필요합니다).유일한 문제는 순수한 C 코드에 대해 많은 오류를 보고하는 코드 에디터입니다(On-the-fly 코드 체크는 끌 수 있지만...).적절한 구문 강조 표시를 원하는 경우 Eclim을 Ecllipse추가하고 Ecllipse와 Vim의 모든 좋은 기능을 즐길 수 있습니다(위 참조).

다른 유망한 이클립스 플러그인은 Colorer이지만 아직 Objective-C를 지원하지 않습니다.기능 요청은 자유롭게 제출해 주세요.

슬릭 에디트

SlikEdit뛰어난 IDE 기능 에서도 Objective-C를 지원합니다.배우는 것은 꽤 복잡하지만(Emacs만큼 복잡하지는 않지만), 구입을 꺼리지 않는다면(가격은 꽤 저렴합니다) 이것이 최선의 선택이라고 생각합니다.

또한 독립 실행형 편집기 대신 사용할 수 있는 Eclipse 플러그인도 있습니다.

KDevelop(KDevelope

KDevelop 패치가 존재한다고 한다(15년이 지났지만 누가 신경써?)개인적으로 KDevelopEmacsen에 비해 기능이 뛰어나다고 생각하지 않기 때문에 굳이 시도하지 않습니다.


위의 내용은 Linux에서의 Objective-C 개발에도 적용됩니다.이는 언급된 모든 툴이 어느 정도 휴대성이 있기 때문입니다.

2021년 현재 GNUstep Windows MSVC 툴체인은 LLVM/Clang을 사용하는 Visual Studio 프로젝트를 포함하여 모든 Windows 앱에서 Objective-C 코드를 통합할 수 있습니다.여기에는 Automatic Reference Counting(ARC) 및 Objective-C 2.0(블록 등) 기능의 지원이 포함됩니다.

이 프로젝트에는 GNUstep의 Foundation, CoreFoundation 및 libdispatch 라이브러리가 포함됩니다.현재 AppKit, UIKit 등의 UI 프레임워크는 포함되어 있지 않지만, 예를 들어 Objective-C로 작성된 크로스 플랫폼 비즈니스 로직을 사용하여 Windows 전용 UI를 작성하는 데 사용할 수 있습니다.

언급URL : https://stackoverflow.com/questions/56708/objective-c-for-windows

반응형