11

Windows XP マシンに GNUstep をインストールしたばかりで、コマンド ラインから次の Objective-C Hello World プログラムをコンパイルしようとしています。

#import <Foundation/Foundation.h>

int main(int argc, const char *argv[]) {
    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];

    NSLog(@"Hello world\n");

    [pool drain];
    return 0;
}

そのようにコマンドラインからプログラムをコンパイルしようとすると

gcc hello.m -o hello

最終的に次のエラーが発生します

hello.m:1:34: Foundation/Foundation.h: No such file or directory

標準の Objective-C ライブラリの場所をコンパイラに通知するために、何かする必要がありますか?

4

10 に答える 10

10

こちらをご覧ください。コンパイルコマンドにはたくさんのパラメータが必要なようです。

于 2009-02-25T19:26:38.683 に答える
7

コマンドでこのコマンドラインを実行してみてください。それは私のために働いた。

gcc -I"c:/GNUstep/GNUstep/System/Library/Headers" -L "c:/GNUstep/GNUstep/System/Library/Libraries" -o hello helloWorld.m -lobjc -lgnustep-base -fconstant-string-class=NSConstantString
于 2012-02-02T13:59:42.240 に答える
4

「GNUmakefile」というファイルを作成し、これをそれに突っ込みました:

include ${GNUSTEP_MAKEFILES}/common.make

TOOL_NAME = MyApp
MyApp_OBJC_FILES = code.m

include ${GNUSTEP_MAKEFILES}/tool.make

次に、プロンプトで「make」と入力しました。出力は obj\MyApp.exe に書き出されます

それは私のためにそれをしました。gccコマンドラインで詰め込みます。

于 2009-05-04T07:17:48.473 に答える
2

Windows の GNUstep インストール プロセス

  1. URL にアクセスしてください: http://ftpmain.gnustep.org/pub/gnustep/binaries/windows/
  2. exe ファイル gnustep-system-0.19.2-setup.exe をダウンロードします。
  3. 次に、gnustep-core-0.19.2-setup.exe をダウンロードします。任意のバージョンの gnustep-system をダウンロードする場合、gnustep-core と同じバージョンをダウンロードする必要があることに注意してください。たとえば、gnustep-setup-0.22.1-setup.exe をダウンロードした場合は、gustep-core-0.22.1-setup.exe をダウンロードする必要があります。そうしないと、コードが実行されません。
  4. 最初に gnustep-system-0.19.2-setup.exe をインストールしてから、gnustep-core-0.19.2setup.exe をインストールします。逆の順序でインストールしようとしないでください。
  5. Windows 用の gnustep を入手したら、[スタート] > [すべてのプログラム] > [GNUstep] > [シェル] に移動します。
  6. メモ帳エディターを開き、メモ帳に次のコードを記述します。

.

#import 'Foundation/Foundation.h'

int main (int argc, const char * argv[])
{
    NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
    NSLog (@"Anil Kumar Yadav has Run the First Objective C program!");
    [pool drain];

    return 0;
}

C:/GNUstep/home/foldername に hello.m として保存します。foldername は、最初にシェルを起動したときの名前であることを覚えておいてください。これにより、環境が作成され、C:/GNUstep/home にコンピューター名の名前でフォルダーが作成されます。フォルダ。だからパニックにならないでください。

  1. シェルに移動して、次のコマンドを入力します gcc -o hello hello.m -I /GNUstep/System/Library/Headers -L /GNUstep/System/Library/Libraries -lobjc -lgnustep-base -constant-string-class=NSConstantString
  2. このコマンドは、foldername フォルダーに hello.exe ファイルを作成します。
  3. 再びシェルでコマンド ./hello.exe を入力します。最後に、シェルで出力を確認できます。

初めての Objective C プログラムの作成に成功したことをお祝いします。説明が必要な場合は、ayadav00009@gmail.com までご連絡ください。

于 2010-05-21T10:02:05.733 に答える
1

私はこれが遅い応答であることを知っていますが、次のWebサイトは、GNUstepを起動して実行するのに最適であり、上記および他の多くの質問に回答しています。

http://www.gnustep.it/nicola/Tutorials/index.html

それは私に1トン助けてくれました。

于 2012-02-23T15:53:31.463 に答える
1

GNUstep ヘッダーとフレームワークが配置されている場所をコンパイラに伝える必要があります。最も簡単な方法 (少なくとも Unix システムでは、Windows で GNUstep を使用したことはありません) は、gnustep-make を使用することです。次のような単純な GNUstep-make ファイルを作成できます。

include $(GNUSTEP_MAKEFILES)/common.make

TOOL_NAME = hello
hello_OBJC_FILES = hello.m

include $(GNUSTEP_MAKEFILES)/tool.make
于 2009-02-25T20:03:03.027 に答える
1

私の問題では、決定的な情報は

-fconstant-string-class=NSConstantString

上のバギーボーイから...

于 2011-04-27T16:25:34.417 に答える
1

私の GNUstep インストールは c:\GNUstep\GNUstep\System にあります。異なる場合は、それに応じて Foundation.h のインポートを変更する必要があります。

これは私がしました:

  1. 次のような c:\myprogs\obj-c\hello\hello.m を作成します。

//--------- こんにちは。

#import <../../GNUstep/System/Library/Headers/Foundation/Foundation.h>

int main(int argc, const char* argv[])
{
    NSAutoreleasePool* pool = [[NSAutoreleasePool alloc] init];
    NSLog(@"Hello from Hello.m!");

    [pool release];
    return 0;
}

//---------

  1. MinGW シェルを起動します。(上記を参照。)

  2. シェル コマンド ラインで、プログラム コードが配置されているディレクトリに移動します。(これは Unix ではないため、Windows のドライブ文字を含める必要があることに注意してください。):

    cd /c/myprogs/obj-c/hello

  3. プログラムをコンパイルします。

    gcc -o こんにちは hello.m -I/c/GNUstep/GNUstep/System/Library/Headers \

    -L /c/GNUstep/GNUstep/System/Library/Libraries -lobjc -lgnustep-base \

    -fconstant-string-class=NSConstantString

(「\」文字を使用すると、コマンドを複数行に拡張できることに注意してください。)

コンパイルすると、次の情報メッセージが表示されます。

Info: resolving ___objc_class_name_NSAutoreleasePool by linking to __imp____objc_class_name_NSAutoreleasePool (auto-import)
Info: resolving ___objc_class_name_NSConstantString by linking to __imp____objc_class_name_NSConstantString (auto-import)

結果の hello.exe を実行すると、次のようになります。

2009-06-03 14:44:59.483 hello[1240] Hello from Hello.m!
于 2009-06-03T19:32:25.220 に答える
1

OK、このminw32、環境、およびgnustepコア開発全体の問題と、makeファイルがWindows環境で機能しない理由に気付きました。パッケージをインストールするときに、場所にデフォルトのオプションを使用していなかったためです。

デフォルトのオプションに従って、3 つのパッケージすべてがフォルダー構造内で互いの上にインストールされていることを確認します。c:\GNUstep\ で始まると思います

これにより、次のようなすべての環境問題が解決されました。

Foundation/Foundation.h: そのようなファイルまたはディレクトリはありません

objc/Object.h: そのようなファイルまたはディレクトリはありません

そのくだらない長々とした状況で他の誰かを助けることを願っています.

于 2010-10-14T15:52:12.847 に答える
0

私は Windows で GNUStep を使用してこれに頭を悩ませてきました。最も単純なチュートリアルでは、C プログラムを作成し、GCC でコンパイルします。それをやりたい場合は、GNUStep を気にする必要はありません。次のレベルのチュートリアルでは、Foundation ヘッダーと単純な GNUmakefile スクリプトを含む hello world を実行しますが、GNUStep の指示に従うことになるため、Windows インストールでは機能しません。インストールされているシェルを開くことはわかっていますが、GNUmakefile ファイルを使用するためのオンライン チュートリアルに従っても機能しませんでした。共通のメイクファイルをインクルードしようとすると、一連のエラーが発生します。

解決策は非常に簡単であることがわかりました。それを行うように指示されていないだけです。GNUSTEP_MAKEFILES は、インストーラーによって設定されていません。/GNUstep/System/Library/Makefiles の値を持つ GNUSTEP_MAKEFILES という環境変数を追加してからシェルを再度開くと、GNUmakefile スクリプトを使用してソース フォルダーで make を実行すると、共通の makefile などを正常に含めることができます。

これで、Foundation/Foundation.h ヘッダーが含まれる単純なコンソール アプリケーションをビルドする makefile を取得するのに十分です。 、たとえば、物事の GUI 側。

于 2010-04-29T00:22:40.247 に答える