gpt4 book ai didi

objective-c - 在 Ubuntu 14.04(64 位)上与 GNUstep 链接

转载 作者:行者123 更新时间:2023-12-03 16:40:29 26 4
gpt4 key购买 nike

我正在尝试编译一个引用 GNUstep 类的简单应用程序,在我的 Ubuntu 14.04、64 位机器上使用 GNUstep:

#import <Foundation/Foundation.h>
#import <Cocoa/Cocoa.h>

int main(int argc, char **argv)
{
NSString *bestType = [[NSPasteboard generalPasteboard]
availableTypeFromArray: nil];
NSLog(@"best type: %@", bestType);
return 0;
}

这是我的编译和链接标志(其中一些可能有点过分):

CFLAGS=`gnustep-config --objc-flags` -std=gnu99
LDFLAGS=`gnustep-config --base-libs` -lgnustep-base -lobjc -lm -lglut -lGLU -lGL

在编译之前我运行了脚本:

/usr/share/GNUstep/Makefiles/GNUstep.sh

这是“make -n”的输出

gcc main.m `gnustep-config --objc-flags` -std=gnu99 -L. `gnustep-config --base-libs` -lgnustep-base -lobjc -lm -lglut -lGLU -lGL -o tester

但是在链接时,Cocoa 类似乎没有被拉入,并且出现 undefined reference 错误:

/tmp/ccnyXBoH.o:(.data.rel+0x8): undefined reference to `__objc_class_name_NSPasteboard'

如果我删除 main.m 中对 Cocoa 类的所有引用,应用程序编译时不会出现错误。

最佳答案

您找不到 NSPasteboard 的类定义的原因是它位于 gnustep-config --gui-libs 选项中 - 即符号位于GNUStep 的 gui 库,不在 GNUStep 的基础库中。解决方案是将 LDFLAGS 行更改为:

LDFLAGS=`gnustep-config --gui-libs` -lglut -lGLU -lGL

您不需要双重指定 -lgnustep-base -lobjc -lm - 它们是 --base-libs 的一部分--gui-libs.

关于objective-c - 在 Ubuntu 14.04(64 位)上与 GNUstep 链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35271399/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com