[objective-c] Windows 용 Objective-C

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

Cygwin과 GCC? 어떻게 든 이것을 Visual Studio에 통합 할 수있는 방법이 있습니까?

이러한 행을 따라 Windows SDK를 연결하고 사용하는 방법에 대한 제안이 있습니다. 다른 짐승이지만 Windows DLL에서 어셈블리를 작성하고 링크를 통해 해당 호출에 액세스 할 수 있다는 것을 알고 있지만 인터넷 검색을 사용하지 않고 단편적인 방향을 찾지 않고도이 작업을 수행하는 방법을 모르겠습니다.

누구든지 이런 종류의 일을하거나 설명 할 수있는 좋은 온라인 또는 책 자료를 알고 있습니까?



답변

Objective-C 만 원하지만 Cocoa 프레임 워크는 원치 않으면 이전의 두 가지 답변을 확장하면 gcc는 모든 플랫폼에서 작동합니다. Cygwin을 통해 사용하거나 MinGW를 얻을 수 있습니다. 그러나 Cocoa 프레임 워크를 원하거나 적어도 합리적인 수준의 서브셋을 원한다면 GNUStep과 Cocotron이 최선의 선택입니다.

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

GNUStep에서 이러한 기능을 테스트하지는 않았지만 충분히 새로운 버전의 gcc를 사용하면 해당 기능을 사용할 수 있습니다. 몇 년 전 GNUStep에서 Objective-C ++를 사용할 수 없었습니다. 그러나 GNUStep은 거의 모든 플랫폼에서 컴파일됩니다. Cocotron은 매우 맥 중심의 프로젝트입니다. 다른 플랫폼에서 컴파일하는 것이 가능할 수도 있지만, 메이크 파일이 아닌 XCode 프로젝트 파일이 제공되므로 OS X에서는 즉시 프레임 워크를 컴파일 할 수 있습니다. 또한 XCode에서 Windows 앱을 컴파일하는 방법에 대한 지시 사항도 함께 제공됩니다. 다른 플랫폼. 기본적으로 Cocotron을위한 Windows 개발 환경을 설정하는 것이 가능할 수도 있지만 GNUStep을위한 환경을 설정하는 것만 큼 쉽지는 않습니다. 따라서 독자적으로 작업 할 수 있으므로 GNUStep은 개발중인 경우 반드시 갈 길입니다. Windows와는 반대로 Windows.

그 가치에 따라 Cocotron은 MIT 라이센스에 따라 라이센스가 부여되고 GNUStep은 LGPL에 따라 라이센스가 부여됩니다.


답변

Windows 환경 내에서 Objective C 사용할 수 있습니다 . 다음 단계를 따르면 제대로 작동합니다.

  1. 방문 그누 스텝 웹 사이트 및 다운로드 GNUstep MSYS Subsystem(그누 스텝에 대한 MSYS), GNUstep Core(그누 스텝에 대한 라이브러리) 및GNUstep Devel
  2. 이러한 파일을 다운로드 한 후 순서대로 설치하십시오. 그렇지 않으면 구성에 문제가 있습니다
  3. C:\GNUstep\GNUstep\System\Library\Headers\Foundation1로 이동하여 Foundation.h존재 하는지 확인하십시오.
  4. 명령 프롬프트를 열고 올바르게 설치되었는지 gcc -v확인하십시오 GNUstep MSYS(파일을 찾을 수 없음 오류가 발생하면의 bin폴더 가에 있는지 확인 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“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
  7. 마지막으로 명령 프롬프트에서 입력 helloworld하여 실행하십시오.

Objective-C와 함께라면 최고입니다!


참고 사항 :

  1. 기본 설치 경로를 사용했습니다. 명령 줄을 적절하게 조정하십시오.
  2. 귀하의 폴더 경로가 내 경로와 비슷한 지 확인하십시오. 그렇지 않으면 오류가 발생합니다

답변

또한:

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

http://www.cocotron.org/


답변

WinObjC? iOS 용 Windows 브리지 (이전의 ‘Project Islandwood’)

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

현재 상태로 오픈 소스 커뮤니티에서 브리지를 사용할 수 있습니다. 지금과 가을 사이. MIT 라이센스에 따른 오픈 소스 프로젝트로서의 iOS 브리지. 프로젝트의 야망이 주어지면 iOS 개발자가 Windows에서 앱을 쉽게 빌드하고 실행할 수 있습니다.

Salmaan Ahmed는 iOS 용 Windows Bridge 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 지원을 추가하여 모바일 지원을 추가 할 예정입니다.


답변

Cocotron 프로젝트에 대한 감정이 혼재되어 있습니다. 그들이 소스 코드를 공개하고 공유하게되어 기쁘지만 가장 쉬운 방법은 아닌 것 같습니다.

예.
Apple은 소스 코드를 objective-c runtime에 출시했으며 여기에는 속성 및 가비지 수집이 포함됩니다. 그러나 Cocotron 프로젝트에는 objective-c 런타임 자체 구현이 있습니다. 왜 노력을 복제 귀찮게? objc.dll 파일을 빌드하는 데 사용할 수있는 Visual Studio Project 파일도 있습니다. 또는 게으른 경우 Windows에 Safari를 설치하여 DLL 파일을 복사하면됩니다.

또한 애플이 오픈 소스 한 CoreFoundation을 활용하지 않았다. 이에 대한 질문을 게시 했지만 답변을받지 못했습니다.

현재 최상의 솔루션은 여러 소스 (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으로 컴파일됩니다.

부수적으로 사용할 수없는 기능 중 하나는 사전 / 배열 / 기타 리터럴입니다. 모두 Apple의 NSDictionary, NSArray, NSNumber 등의 클래스를 사용하기 위해 Clang으로 하드 코딩되어 있기 때문입니다.

그러나 Apple의 광범위한 프레임 워크 없이도 행복하게 살 수 있다면 가능합니다. 다른 답변에서 언급했듯이 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 응용 프로그램을 -mwindows플래그 로 컴파일하는 기능도 포함되어 있습니다. 예를 들면 다음과 같습니다.

g++ -mwindows MyFile.cpp

아직 시도하지는 않았지만 Objective-C 클래스를 가능한 가장 높은 계층에서 Objective-C ++로 래핑하면 하나의 Windows 응용 프로그램에서 기본 Windows GUI C ++와 Objective-C를 모두 얽매일 수 있어야합니다.


답변

WinObjC를 확인하십시오 .

https://github.com/Microsoft/WinObjC

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