在Mac上创建一个.dll文件:.dylib还是framework?

13
我需要为我们的一个客户创建Mac版本的库。我对Mac上的动态库不太熟悉,但据我所知,我有两个选择:.dylib或frameworks。哪个选项最好?为什么?
一些相关的问题:
- 如果我理解正确,.dylib必须安装在其中一个标准UNIX目录(如/usr/lib)中。因此,使用.dylib会使我的客户的安装程序更加复杂,因为他们可能需要请求在系统文件夹中写入某些内容的权限? - 框架是否可以是私有的并嵌入到我的客户的包中?这样其他人就看不到/使用它们了吗?
任何建设性的批评/评论/想法都非常欢迎。提前感谢。
Alex

你是在考虑拖放安装,还是提供一个处理一切的安装程序(.pkg)?如果是后者,那么权限不应该是个问题,因为我运行过的几乎所有安装程序都会要求输入管理员密码(从而获得管理员权限)。 - Matt Ball
1个回答

11

.dylib类似于Linux上的.so

框架基本上只是OSX分发库和标题的方式。 它们是用于库分发的Application Bundle等效物。

使用任一方法,如果您希望确保其他人不使用它们,则应该使用静态库(.a文件)并让客户将其静态链接到其应用程序中。

否则,框架和.dylib之间实际上没有太大区别,只是前者对于OSX开发人员更友好。

无论哪种方法都可以嵌入在客户的应用程序包内,otool/install_name_tool都可以良好地处理它们。


1
你也可以在OS X上使用.so,不是吗?反正我以前见过。 - mk12
@mk12 是的。实际上,OS-X中的所有Apache模块都是“.so”。 - Hawken
你好!我该如何将dylib嵌入客户应用程序包中?我正在尝试将OpenCV库嵌入到Qt应用程序中。 - P.C.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接