231

Windows プラットフォームで Objective-C を作成する最良の方法は何ですか?

Cygwinとgcc?これをどうにかして Visual Studio に統合する方法はありますか?

それらの線に沿って、このようなものに Windows SDK をリンクして使用する方法に関する提案はありますか。それは別の獣ですが、Windows DLLでアセンブリとリンクを記述して、これらの呼び出しにアクセスできることは知っていますが、グーグルで断片的な指示を取得せずにこれを行う方法がわかりません。

この種のことを行ったり説明したりするための優れたオンラインまたは本のリソースを知っている人はいますか?

4

14 に答える 14

146

前の 2 つの回答を拡張すると、Objective-C のみが必要で、Cocoa フレームワークは必要ない場合、gcc はどのプラットフォームでも動作します。Cygwin を介して使用するか、MinGW を入手できます。ただし、Cocoa フレームワーク、または少なくともそれらの合理的なサブセットが必要な場合は、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 はほぼすべてのプラットフォームからコンパイルできます。Cocotron は非常に Mac 中心のプロジェクトです。他のプラットフォームでコンパイルすることはおそらく可能ですが、makefile ではなく XCode プロジェクト ファイルが付属しているため、OS X 上でそのままフレームワークをコンパイルすることしかできません。XCode で Windows アプリをコンパイルする手順も付属していますが、そうではありません。他のプラットフォーム。基本的にはCocotronのWindows開発環境を構築することは可能かと思いますが、GNUStepのように簡単に構築することはできず、自力で開発することになるので、GNUStepで開発するなら間違いなくGNUStepがおすすめです。 Windows だけではなく、Windows。

ちなみに、Cocotron は MIT ライセンスでライセンスされており、GNUStep は LGPL でライセンスされています。

于 2008-09-26T18:42:43.120 に答える
89

Windows環境内でObjectiveCを使用できます。これらの手順に従うと、正常に機能するはずです。

  1. GNUstepのWebサイトGNUstep MSYS Subsystemにアクセスして、 (MSYS for GNUstep)、GNUstep Core(Libraries for GNUstep)、およびをダウンロードします。GNUstep Devel
  2. これらのファイルをダウンロードした後、この順序でインストールしないと、構成に問題が発生します
  3. C:\GNUstep\GNUstep\System\Library\Headers\Foundation1に移動し、それが存在することを確認しFoundation.hます
  4. コマンドプロンプトを開き、実行gcc -vして、正しくインストールされていることを確認しGNUstep MSYSます(ファイルが見つからないというエラーが発生した場合は、のbinフォルダーがにあることを確認しGNUstep MSYSてくださいPATH
  5. この単純な「HelloWorld」プログラムを使用して、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. あなたのフォルダパスが私のものと似ていることを確認してください。そうでない場合、エラーが発生します
于 2012-03-24T05:04:13.457 に答える
13

また:

Cocotron は、Apple Inc. の Cocoa ドキュメントで説明されているものと同様のクロスプラットフォームの Objective-C API を実装することを目的としたオープン ソース プロジェクトです。これには、AppKit、Foundation、Objective-C ランタイム、および CoreGraphics や CoreFoundation などのサポート API が含まれます。

http://www.cocotron.org/

于 2008-09-11T18:26:08.377 に答える
8

これが非常に古い投稿であることは認識していますが、最近利用可能になり、Windows プラットフォームでほぼすべての Objective-C 2.0 機能を有効にするソリューションを見つけました。

gcc 4.6 の出現により、Objective-C 2.0 言語機能 (ブロック、ドット構文、合成プロパティなど) のサポートが Objective-C コンパイラに追加されました (詳細については、リリース ノートを参照してください)。ランタイムも更新され、Apple 独自の Objective-C 2.0 ランタイムとほぼ同じように動作するようになりました。つまり、Mac で Clang を使用して合法的にコンパイルされる (ほぼ) すべてのプログラムは、修正なしで gcc 4.6 でもコンパイルされるということです。

補足として、利用できない機能の 1 つは、Apple の NSDictionary、NSArray、NSNumber などのクラスを使用するために Clang にすべてハードコードされているため、ディクショナリ/配列/その他のリテラルです。

ただし、Apple の広範なフレームワークがなくても構わない場合は、そうすることができます。他の回答で述べたように、GNUStep と Cocotron は、Apple のクラス ライブラリの変更されたバージョンを提供するか、独自に作成することができます (私の推奨オプション)。

MinGW は、Windows プラットフォームで GCC 4.6 を入手するための 1 つの方法であり、MinGW Web サイトからダウンロードできます。インストールするときは、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)

-mwindowsMinGW には、フラグを使用してネイティブ GUI Windows アプリケーションをコンパイルするためのサポートも含まれています。例えば:

g++ -mwindows MyFile.cpp

私はまだ試していませんが、Objective-C クラスを Objective-C++ で可能な限り最上位の層でラップすると、ネイティブ Windows GUI C++ と Objective-C をすべて 1 つの Windows アプリケーションでうまく絡ませることができるはずです。

于 2012-10-12T03:48:44.343 に答える
7

WinObjCをチェックしてください:

https://github.com/Microsoft/WinObjC

これは、Visual Studio + Windows と統合する Microsoft による公式のオープンソース プロジェクトです。

于 2015-11-03T16:24:23.883 に答える
6

試してみたいだけなら、.NET (Windows) 用の Objective-C コンパイラがここにあります: qckapp

于 2010-07-20T23:08:26.783 に答える
5

ここでは、Windows で動作し、Visual Studio 2008\2010 とうまく連携する目的の C コンパイラを入手できます。

open-c フライト

最新のソースをダウンロードするだけです。すべての CF-Lite をビルドする必要はありません。objc.sln というソリューションがあります。インクルード パスのいくつかを修正する必要がありますが、問題なくビルドできます。テスト プロジェクトも含まれているため、いくつかの Objective-C .m ファイルがコンパイルされ、ビジュアル スタジオで動作することを確認できます。残念なことに、x64 ではなく Win32 でしか動作しません。x64 をサポートするには、x64 用に記述する必要があるアセンブリ コードがいくつかあります。

于 2011-08-27T22:48:54.773 に答える
3

Objective C 2.0 を Windows に移植する最近の試みはSubjectiveプロジェクトです。

Readme から:

Subjective は、ARC をサポートする Objective C 2.0 を Windows に導入しようとする試みです。

このプロジェクトは、OS X 10.8.5 に同梱されている Objective C ランタイムである objc4-532.2 のフォークです。ポートは、MinGW リンカーと組み合わせた llvm-clang を使用して、OS X 上でクロスコンパイルできます。

特定の制限があり、その多くは余分な作業の問題ですが、例外やブロックなどの他の制限は、サードパーティ プロジェクトでのより深刻な作業に依存しています。制限事項は次のとおりです。

• 32 ビットのみ - 64 ビットは進行中です

• 静的リンクのみ - 動的リンクが進行中です

• クロージャ/ブロックなし - libdispatch が Windows でサポートするまで

• 例外なし - clang が Windows でサポートするまで

• 古いスタイルの GC はありません - 誰かが気になるまで...

• 内部: vtables なし、gdb サポートなし、単純な malloc のみ、事前最適化なし - これらのいくつかは 64 ビット ビルドで利用可能になります。

• 現在、パッチが適用された clang コンパイラが必要です。パッチは -fobjc-runtime=subj フラグを追加します

このプロジェクトはGithubで入手できます。Cocotron Group には、進行状況と発生した問題の概要を示すスレッドもあります。

于 2014-06-01T15:23:36.810 に答える
2

ここでGNUStepを入手

MINGWはこちら

MINGW をインストールする GNUStep をインストールしてからテストする

于 2014-12-20T13:53:42.777 に答える