我终于让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'
Run Code Online (Sandbox Code Playgroud)
我的源代码:
#import <Foundation/Foundation.h>
int main(void) {
NSLog(@"hello world");
}
Run Code Online (Sandbox Code Playgroud) 使用GNUstep/MinGW编译Objective-C时出现以下错误:
The procedure entry point __printf__ could not be located in the dynamic link library libintl-8.dll.
Run Code Online (Sandbox Code Playgroud)
Windows 7/64位.libintl-8.dll上的文件版本是0.18.1.
编译器是否使用了正确的文件?
编辑:这是c:\ MinGW\bin\libintl-8.dll文件的Exports表
[Ordinal/Name Pointer] Table
[ 0] __printf__
[ 1] _get_output_format
[ 2] _nl_expand_alias
[ 3] _nl_explode_name
[ 4] _nl_find_domain
[ 5] _nl_find_msg
[ 6] _nl_language_preferences_default
[ 7] _nl_load_domain
... ...
Run Code Online (Sandbox Code Playgroud) 我试图弄清楚为什么当我将我的main.m文件转换为main.mm文件时,它不再正确链接.
我已将问题减少到以下示例代码:
#import <Foundation/Foundation.h>
#import <AppKit/AppKit.h>
int main( int argc, const char ** argv ) {
return NSApplicationMain( argc, argv);
}
Run Code Online (Sandbox Code Playgroud)
我正在使用gnustep和linux.我输入以下命令,一切都按预期工作:
g ++ -g -c main.m -I/usr/GNUstep/Local/Library/Headers -I/usr/GNUstep/System/Library/Headers
g ++ -g -o test main.o -L/usr/GNUstep/Local/Library/Libraries -L/usr/GNUstep/System/Library/Libraries -lgnustep-base -lgnustep-gui
现在如果我将main.m重命名为main.mm并使用这两个命令(同样exept main.m now main.mm):
g ++ -g -c main.mm -I/usr/GNUstep/Local/Library/Headers -I/usr/GNUstep/System/Library/Headers
g ++ -g -o test main.o -L/usr/GNUstep/Local/Library/Libraries -L/usr/GNUstep/System/Library/Libraries -lgnustep-base -lgnustep-gui
我收到以下错误:main.mm:7:未定义引用`NSApplicationMain(int,char const**)'
有人可以找到我做错了吗?我不明白为什么它现在无法链接.
我试图在目标c程序中添加一些C++类,这阻止了我继续.
感谢您提供任何帮助.
我对键值编码和多对多关系有点困惑.我已经读过,当我有这样的关系时,我应该使用[object mutableArrayValueForKey:@"key"]; 检索保存有序关系中的对象的可变数组.
我不明白的是mutableArrayValueForKey或valueForKey之间的区别是什么.
让我举个例子来说明(数组是自我设置的NSMutableArray作为属性):
id array1= [self valueForKey:@"array"];
NSLog(@"first element %@",[array1 objectAtIndex:1]);
id array2 = [self mutableArrayValueForKey:@"array"];
NSLog(@"first element %@",[array2 objectAtIndex:1]);
Run Code Online (Sandbox Code Playgroud)
两个调用返回完全相同.在这种情况下,第二个的好处或不同之处是什么?
干杯!
好的,我有这个程序在这里:
int main(int argc, const char * argv[])
{
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
NSLog (@"Hello world!");
[pool drain];
return 0;
}
Run Code Online (Sandbox Code Playgroud)
问题是当我使用命令"gcc -framework Foundation prog1.m -o prog1"编译它时
我得到这个:"gcc:错误试图执行'cclobj':execvp:没有这样的文件或目录"
我需要安装任何包吗?"
我下载并构建了GNUstep libobjc2 1.6.1,
svn co http://svn.gna.org/svn/gnustep/libs/libobjc2/1.6.1/ rep
cd rep
make
Run Code Online (Sandbox Code Playgroud)
当我尝试编译Objective-C代码时出现此错误.
hoon@ubuntu:~/work/objc2$ clang -fobjc-nonfragile-abi -fobjc-arc -fblocks *.m *.a -l pthread; ./a.out
Objective-C ABI Error: Loading modules from incompatible ABIs while loading
a.out: loader.c:38: __objc_exec_class: Assertion `objc_check_abi_version(module)' failed.
Aborted (core dumped)
Run Code Online (Sandbox Code Playgroud)
我似乎需要构建libobjc.a一些不同的配置.有什么问题,我该怎么做才能解决这个错误?
环境:Ubuntu 12.04 LTS
嗨,我是一个初学者学习目标c.我发现错误"hello.m:1:34:Foundation/Foundation.h:没有这样的文件或目录"我知道我需要制作一个make文件我可能知道如何制作make文件
我正在尝试以编程方式访问一对一(一对多).My Data模型包含一个名为language(带有两个字符串属性)的NSManagedEntity,它与一个名为WordCategory的实体(一对多)有关系.我使用NSFetchRequest获取所有语言实体.工作正常.我得到了关系的valueForKey,并且工作正常.我可以使用它的对象.但是,当我尝试将消息计数发送到存储WordCategory对象的NSSet时,我得到了一个
换句话说,这条线有效:
NSLog(@"word category count %@",[[wordCategory anyObject] valueForKey:@"name"]);
Run Code Online (Sandbox Code Playgroud)
这个没有:
NSLog(@"word category count %@",[wordCategory count]
Run Code Online (Sandbox Code Playgroud)
我收到一条消息:调试器中的EXC_BAD_ACCESS.
这是代码的其余部分:
NSManagedObjectContext *moc = [myAppDelegate managedObjectContext];
NSFetchRequest *request = [[NSFetchRequest alloc] init];
[request setEntity:[NSEntityDescription entityForName:@"Language" inManagedObjectContext:moc]];
NSError *error = nil;
NSArray *results = [moc executeFetchRequest:request error: &error];
if (error) {
[NSApp presentError:error];
return;
}
NSManagedObject *obj = [results objectAtIndex:0];
NSSet *wordCategory = [obj valueForKey:@"category"];
NSLog(@"word category count %@",[wordCategory count]);
Run Code Online (Sandbox Code Playgroud)
我会感激任何人都可以在这个谜团中流下的光.谢谢你的帮助!
我刚刚制作了一个makefile跟随在线教程. http://www.gnustep.org/resources/documentation/Developer/Base/ProgrammingManual/manual_1.html
include $(GNUSTEP_MAKEFILES)/common.make
TOOL_NAME = LogTest
LogTest_OBJC_FILES = source.m
include $(GNUSTEP_MAKEFILES)/tool.make
Run Code Online (Sandbox Code Playgroud)
一旦我运行了makefile,它就会显示出来
This is gnustep-make 2.4.0. Type 'make print-gnustep-make-help' for help.
make[1]: GNUmakefile: No such file or directory
make[1]: *** No rule to make target `GNUmakefile'. Stop.
make: *** [internal-all] Error 2
Run Code Online (Sandbox Code Playgroud)
我检查了我的GNUSTEP_MAKEFILES设置.我不知道发生了什么.任何的想法?谢谢
我一直在Ubuntu系统上使用GCC + GNUstep试验Objective-C.
现在关于LLVM Clang编译器,它提供了哪种*步骤库?它是否使用Apple Cocoa上的GNUstep?我最感兴趣的是基础库 - 集合,流等.该网站没有提供太多信息.