相关疑难解决方法(0)

不知道如何导出 Objective-C 类。i386 体系结构的未定义符号

我正在尝试在 OSX 上的 GTK+ 上做一些工作,但遇到了一些麻烦,因为说实话,我对 Objective-C 不太熟悉。我有足够的编程经验,可以很快掌握基本语法,并且可以在文档中查找我需要的内容。但我遇到的问题与链接库并将类暴露给我链接的程序有关。

GTK+ 是一个 C 库,但 OSX 后端包含几个 Objective-C 类。它们不作为公共 API 公开,仅在内部使用;但对于我正在做的事情,我想尝试公开这些类。

作为参考,这里是其中一个类:

https://github.com/GNOME/gtk/blob/gtk-2-24/gdk/quartz/GdkQuartzWindow.h https://github.com/GNOME/gtk/blob/gtk-2-24/gdk/quartz /GdkQuartzWindow.c

我已经更改了构建系统,以便它安装头文件。我有另一个源文件(在 gtk+ 构建系统之外),其功能如下:

GdkQuartzWindow *win = [[GdkQuartzWindow alloc] /* other messages... */ ];
Run Code Online (Sandbox Code Playgroud)

当我尝试编译时出现链接器错误:

Undefined symbols for architecture i386:
  ".objc_class_name_GdkQuartzWindow", referenced from:
  pointer-to-literal-objc-class-name in main-a8d029.o
ld: symbol(s) not found for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Run Code Online (Sandbox Code Playgroud)

我不太熟悉 Objective-C 编译器/链接器的工作原理,并且无法理解我如何(或者如果我可以)解决这个问题。

当我运行时,nm libgdk-quartz-2.0.dylib | grep GdkQuartzWindow我看到很多关于这个类的消息:

00057120 t -[GdkQuartzWindow …
Run Code Online (Sandbox Code Playgroud)

linker objective-c clang

5
推荐指数
1
解决办法
2301
查看次数

标签 统计

clang ×1

linker ×1

objective-c ×1