小编jma*_*mah的帖子

将Cocoa前端编写到Erlang应用程序的好方法是什么?

我正在探索在Erlang中编写应用程序的可能性,但它需要有一部分用Cocoa编写(可能是Objective-C).我希望前端和后端能够轻松进行通信.怎么能做到最好?

我可以考虑使用C端口和连接进程,但我认为我想要一个相反的情况(前端启动并连接到后端).有命名管道(FIFO),或者我可以通过TCP端口或命名的BSD套接字使用网络通信.有没有人有这方面的经验?

macos erlang cocoa objective-c

13
推荐指数
1
解决办法
1913
查看次数

如何让Scripting Bridge在运行时生成Objective-C类?

我今天正在更新Scripting Bridge粘贴文件(对于Mail.app),并注意到sdp(1)手册页显示:

您不需要创建相应的实现文件; Scripting Bridge将在运行时创建类实现.

这听起来很酷,但是我没有实现生成的类(如预期的那样):

Undefined symbols for architecture x86_64:
  "_OBJC_CLASS_$_MailApplication", referenced from:
      objc-class-ref in DMBugReportWindowController.o
  "_OBJC_CLASS_$_MailAttachment", referenced from:
      objc-class-ref in DMBugReportWindowController.o
[... more of the same ...]
ld: symbol(s) not found for architecture x86_64`
Run Code Online (Sandbox Code Playgroud)

我不想压制所有未定义的符号,因为这可能很容易掩盖合法的问题,所以我只是使用-U(根据ld(1)手册页):

指定symbol_name没有定义是可以的.使用-two_levelnamespace,结果符号将标记为dynamic_lookup,这意味着dyld将搜索所有已加载的图像.

(我必须使用-Xlinker -U -Xlinker _OBJC_CLASS_$_MailApplication那些标志来达到ld,否则clang会保留这些参数.)

显然制作它们dynamic_lookup是错误的,因为这会在启动时出现动态链接错误:

dyld: Symbol not found: _OBJC_CLASS_$_MailApplication
  Referenced from: /Users/jonathon/Library/Developer/Xcode/...
  Expected in: flat namespace
 in /Users/jonathon/Library/Developer/Xcode/...
Run Code Online (Sandbox Code Playgroud)

如果我使用-force_flat_namespace -undefined suppress(我不想使用,如上所述),也会发生这种情况.该脚本桥接编程指南似乎在暗示我做是正确的事情("准备代码"一节),但没有提到这个问题.

linker cocoa objective-c ld scripting-bridge

4
推荐指数
1
解决办法
618
查看次数

标签 统计

cocoa ×2

objective-c ×2

erlang ×1

ld ×1

linker ×1

macos ×1

scripting-bridge ×1