Ошибка NSLog: не удается найти NXConstantString? - PullRequest
4 голосов
/ 12 февраля 2011

Я наконец-то запустил GNUstep (на windows), и он компилируется и работает нормально. Однако всякий раз, когда я пытаюсь использовать NSLog, я получаю следующую ошибку:

$ gcc -o hello hello.m -I /GNUstep/System/Library/Headers \
> -L /GNUstep/System/Library/Libraries -lobjc -lgnustep-base
hello.m: In function 'main':
hello.m:4:5: error: cannot find interface declaration for 'NXConstantString'

Мой исходный код:

#import <Foundation/Foundation.h>

int main(void) {
    NSLog(@"hello world");
}

Ответы [ 3 ]

11 голосов
/ 12 февраля 2011

Это -

NSLog(@"hello world");

не

 NSlog(@"hello world");  // 'l' should be upper case in NSLog

Попробуйте это -

gcc -o hello hello.m -I /usr/lib/GNUstep/System/Library/Headers \
-L /usr/lib/GNUstep/System/Library/Libraries/ -lgnustep-base \
-fconstant-string-class=NSConstantString

Как скомпилировать целевые программы c, используя gcc

2 голосов
/ 27 сентября 2012

Попробуйте следующее:

$gcc -o hello hello.m -I /GNUstep/System/Library/Headers -L /GNUstep/System/Library/Libraries -lobjc -lgnustep-base -fconstant-string-class=NSConstantString

Примечание

-fconstant-string-class=NSConstantString

без этой команды она рассматривает объекты константных строк как тип классаNXConstantString.


Для запуска:

$./hello.m or whatever your objective-c code file name.
0 голосов
/ 09 октября 2012

это очень просто, просто поставьте пробел между -lgnustep-base и -fconstant-class=NSConstantString

Неправильный путь: -lgnustep-base-fconstant-class=NSConstantString

Правильный путь: -lgnustep-base -fconstant-class=NSConstantString

...