Ответ 1
Посмотрите здесь. Кажется, вам нужна команда параметров компиляции.
Я только что установил GNUstep на моем компьютере под управлением Windows XP, и я пытаюсь скомпилировать следующую программу 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?
Посмотрите здесь. Кажется, вам нужна команда параметров компиляции.
попробуйте запустить эту командную строку в вашей команде. это сработало для меня.
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
Я только что создал файл под названием "GNUmakefile" и закрепил его:
include ${GNUSTEP_MAKEFILES}/common.make
TOOL_NAME = MyApp
MyApp_OBJC_FILES = code.m
include ${GNUSTEP_MAKEFILES}/tool.make
тогда я только что набрал "make" в приглашении. Вывод записывается в obj\MyApp.exe
Это сделало это для меня. винтовая начинка с командной строкой gcc.
Процесс установки GNUstep для Windows
.
#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;
}
сохраните его как hello.m в своем каталоге C:/GNUstep/home/foldername Помните имя папки - это имя, когда вы впервые запустили оболочку, создав ее, и создайте папку по имени вашего компьютера в папке C:/GNUstep/home. Так что не будьте panic.Okay
Конгуратура вы написали свою первую программу Objective C успешно. Нужно пояснить, напишите мне: [email protected]
Вам нужно сообщить компилятору, где расположены заголовки и рамки GNUstep. Самый простой способ (по крайней мере, в системах Unix, я буду честен и скажу, что я не использовал GNUstep в Windows) заключается в использовании gnustep-make. У вас может быть файл GNUstep-make так же просто, как
include $(GNUSTEP_MAKEFILES)/common.make
TOOL_NAME = hello
hello_OBJC_FILES = hello.m
include $(GNUSTEP_MAKEFILES)/tool.make
Моя установка GNUstep находится в каталоге c:\GNUstep\GNUstep\System. Если у вас другое, вы должны соответственно изменить импорт Foundation.h.
Я сделал это:
//---------- 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;
}
//----------
Запустите оболочку MinGW. (См. Выше.)
В командной строке оболочки измените каталог, в котором находится код программы. (Обратите внимание, что, поскольку это не Unix, должна быть включена буква диска Windows.):
cd/c/myprogs/obj-c/hello
Скомпилируйте программу:
gcc -o hello hello.m -I/c/GNUstep/GNUstep/System/Library/Headers\
-L/c/GNUstep/GNUstep/System/Library/Libraries -lobjc -lgnustep-base\
-fconstant-строка-класс = 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!
OK Я только что понял проблему для меня с помощью всего этого minw32, среды и gnustep core dev и почему мой файл make не работал в среде Windows. Поскольку я не использовал параметры по умолчанию для местоположения при установке пакетов.
Задает, что все 3 пакета установлены друг на друга в структуре папок в соответствии с настройками по умолчанию. и я считаю, что он начинается с c:\GNUstep\
Это позволило решить все проблемы среды, такие как:
Foundation/Foundation.h: нет такого файла или каталога
objc/Object.h: Нет такого файла или каталога
Надеюсь, если кто-то помог кому-нибудь в этой тяжелой ситуации.
Для моей проблемы решающая информация была
-fconstant-string-class=NSConstantString
от buggieboy выше...
Я знаю, что это поздний ответ, но следующий веб-сайт отлично подходит для запуска и работы с GNUstep, с приведенным выше и многими другими вопросами:
http://www.gnustep.it/nicola/Tutorials/index.html
Это помогло мне тонну.
Я ударился головой об этом с помощью GNUStep под Windows. Простейшие руководства помогут вам написать программу на языке C и скомпилировать ее с помощью GCC - если бы я хотел это сделать, я бы не стал беспокоиться о GNUStep. Следующий уровень учебников имеет мир приветствия, включая заголовок Foundation и простой файл GNUmakefile script, который затем не работает под установкой Windows, поскольку вы в конечном итоге следуете инструкциям GNUStep. Я знаю, что открыть оболочку, которую он установил, но после онлайн-учебников по использованию файла GNUmakefile по-прежнему не работает. У вас есть целая серия ошибок, пытающихся включить общий make файл.
Оказывается, решение довольно просто, вам просто не нужно это делать. Установщик не установил GNUSTEP_MAKEFILES. Если вы добавите переменную среды GNUSTEP_MAKEFILES со значением /GNUstep/System/Library/Makefiles, а затем снова запустите оболочку, тогда запуск make в исходной папке с GNUmakefile script может успешно включать общий файл makefile и т.д.
Этого достаточно, чтобы получить в make файле простое консольное приложение с включенным заголовком Foundation/Foundation.h, что хорошо предсказывает, хотя мне придется дополнительно исследовать, есть ли еще какие-то настройки, которые не были которые влияют, скажем, на сторону GUI.