Неспособный найти стандартные библиотеки при компиляции Objective C с помощью GNUstep в Windows

Хотя я думаю, что у вас будет несколько более подробных вопросов по мере продвижения, похоже, вам нужно общее руководство, чтобы действительно начать.

Для начала я бы предложил, чтобы вы не хотели использовать один и тот же фрагмент для каждого из двух отображаемых вами вопросов, а два отдельных экземпляра одного и того же класса фрагмента. Например, я думаю, вы хотели бы иметь что-то вроде этого:

questionOneFragment = new BaseFragment();
questionTwoFragment = new BaseFragment();

Похоже, у вас есть список вопросов, и вы просто хотите отобразить два вопроса одновременно, поэтому я думаю, что единственное состояние, которое вам нужно поддерживать - это то, что данные номера вопроса должны отображаться в questionOneFragment (questionTwoFragment должны отображать данные для вопроса в списке после второго вопроса).

Все, что вам для этого понадобится, - это одно целое число firstDisplayedQuestion, которое вы увеличиваете или уменьшаете, основываясь на щелчках по кнопкам prev и next. Вам нужно управлять границами этой переменной, чтобы она не опускалась ниже 0 или выше 1 ниже последнего элемента в вашем списке.

В вашем классе BaseFragment вам нужно иметь методы, которые устанавливают элементы пользовательского интерфейса, которые вы хотите отобразить. Затем, когда нажимается кнопка prev или next, вы соответственно обновляете firstDisplayedQuestion. Затем вы также получаете данные для вопроса в списке, соответствующем firstDisplayedQuestion, и вызываете методы настройки отображения на questionOneFragment, используя эти данные. Затем вы получаете данные для вопроса в списке, соответствующие firstDisplayedQuestion + 1, и используете эти данные для установки элементов отображения questionTwoFragment

11
задан Jason Roberts 25 February 2009 в 19:20
поделиться

6 ответов

Взгляните здесь. Кажется, что каждому нужен набор параметров к команде компиляции.

10
ответ дан 3 December 2019 в 03:19
поделиться

Необходимо сказать компилятор, где заголовки GNUstep и платформы расположены. Самый легкий путь (по крайней мере, в системах Unix, я буду честен и скажу, что не использовал GNUstep в Windows), должен использовать, gnustep-делают. У Вас мог быть GNUstep-make-файл, столь же простой как

include $(GNUSTEP_MAKEFILES)/common.make

TOOL_NAME = hello
hello_OBJC_FILES = hello.m

include $(GNUSTEP_MAKEFILES)/tool.make
1
ответ дан 3 December 2019 в 03:19
поделиться

Я просто создал файл с именем «GNUmakefile» и добавил его в него:

include ${GNUSTEP_MAKEFILES}/common.make

TOOL_NAME = MyApp
MyApp_OBJC_FILES = code.m

include ${GNUSTEP_MAKEFILES}/tool.make

затем я просто набрал «make» в приглашении. Вывод записывается в obj \ MyApp.exe

, который сделал это для меня. винт набивает с помощью командной строки gcc.

4
ответ дан 3 December 2019 в 03:19
поделиться

Моя установка GNUstep находится в c: \ GNUstep \ GNUstep \ System. Если ваш другой, вам следует соответствующим образом изменить импорт Foundation.h.

Я сделал это:

  1. Создайте c: \ myprogs \ obj-c \ hello \ hello.m, который выглядит следующим образом:

/ / ---------- 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 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!
1
ответ дан 3 December 2019 в 03:19
поделиться

Я бился головой об этом с помощью GNUStep под Windows. В простейших руководствах вы можете написать программу на C и скомпилировать ее с помощью GCC - если бы я хотел это сделать, я бы не стал возиться с GNUStep. Следующий уровень руководств представляет собой приветственный мир, включая заголовок Foundation и простой сценарий GNUmakefile, который затем не работает при установке Windows, поскольку вы в конечном итоге следуете инструкциям GNUStep. Я знаю, что нужно открыть установленную оболочку, но следование онлайн-руководствам по использованию файла GNUmakefile по-прежнему не помогло. Вы получили целую серию ошибок из-за попытки включить общий make-файл.

Оказывается, решение довольно простое, вам просто не говорят, что это нужно делать. Установщик не установил GNUSTEP_MAKEFILES. Если вы добавите переменную среды GNUSTEP_MAKEFILES со значением / GNUstep / System / Library / Makefiles, а затем повторно откроете оболочку, то запуск make в исходной папке с помощью сценария GNUmakefile может успешно включить общий make-файл и так далее.

Этого достаточно, чтобы создать из make-файла простое консольное приложение с включенным заголовком Foundation / Foundation.h, что предвещает хорошее, хотя мне придется дополнительно исследовать, есть ли еще какие-либо настройки, которые не были set, которые влияют, скажем, на GUI.

0
ответ дан 3 December 2019 в 03:19
поделиться

Процесс установки GNUstep для Windows

  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, то вы должны скачать gnustep-core-0.22.1-setup.exe, иначе ваш код не будет работать.
  4. Установите сначала gnustep-system-0.19.2-setup.exe, затем установите gnustep-core-0.19.2-setup.exe. Не пытайтесь установить в обратном порядке.
  5. Теперь у вас есть gnustep для windows, затем перейдите в меню start>all program> GNUstep> shell
  6. Теперь откройте редактор notepad и напишите следующий код в notepad:

.

#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. Помните foldername - это имя, когда вы первый раз запускаете оболочку, она создает envoirment и создает папку по имени вашего компьютера в папке 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. Эта команда создаст файл hello.exe в вашей папке foldername.
  3. Снова в shell введите команду ./hello.exe Наконец, вы сможете увидеть вывод в оболочке.

Поздравляю, вы успешно написали свою первую программу на Objective C. Если вам нужны какие-либо разъяснения, пишите мне по адресу: ayadav00009@gmail.com

2
ответ дан 3 December 2019 в 03:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: