macOS 10.14上的应用程序插件(即Mach-O软件包)中的静态变量问题

时间:2018-10-20 01:31:13

标签: c++ macos static dylib macos-mojave

我为Adobe生态系统维护了多个插件,并且在macOS 10.14(仅)中发生了一些非常奇怪的事情。

这些插件是用C ++编写的,并使用Adobe的C / C ++ SDK。在Mac上,它们本质上是Adobe在运行时加载的Mach-O软件包(也称为dylib)。当单个插件加载到例如在macOS 10.14上的Illustrator,一切正常(也就是说,就像10.13及更低版本一样)。但是,在10.14上将多个插件加载到Illustrator时,则为static / global / etc。变量似乎在每个dylib之间共享(有时似乎会丢失状态和/或意外地未定义)。

这与10.13及更低版本中的行为非常不同,在每个行为中,每个dylib都是孤立的,并且全局变量之间永远不会彼此“交互”。我100%确信此问题与macOS 10.14有关,因为相同的确切插件文件在10.13及更低版本上运行没有问题。此外,此问题在macOS 10.14的两个单独版本中均会出现。插画家。

每个插件都很大(至少要成千上万行代码),所以我不确定当前的问题是否可以简化为一个简单的测试用例。无论如何,我试图确定在macOS 10.14下有关dylib加载,内存管理等方面发生了什么更改。谷歌搜索10.14中的dylib更改没有产生任何结果。

0 个答案:

没有答案