gpt4 book ai didi

excel - 在 Mac OS X Sierra (CoolProp) 上设置 DYLD_LIBRARY_PATH

转载 作者:行者123 更新时间:2023-12-04 21:34:11 25 4
gpt4 key购买 nike

免责声明:这个问题始于 GitHub issue .
问题
我会放the X question就在前面:
有谁知道设置DYLD_LIBRARY_PATH的方法以 Excel 2016 将在 MacOS Sierra 上识别的方式?
实际问题(Y): CoolProp 的开发人员如何(否则)允许他们的动态库在 Excel 中使用?
背景
我正在尝试让 Excel 2016 for Mac 使用 these instructions 识别 CoolProp 插件, 这基本上归结为使用这个 startup.plist :

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>my.startup</string>
<key>ProgramArguments</key>
<array>
<string>sh</string>
<string>-c</string>
<string>launchctl setenv DYLD_LIBRARY_PATH "/Users/$USER/Library/Group Containers/UBF8T346G9.Office"</string>
</array>
<key>RunAtLoad</key>
<true/>
</dict>
</plist>
设置 DYLD_LIBRARY_PATH到 Excel 可以访问动态库并复制 libCoolProp.dylib 的位置文件到同一个目录。不幸的是,由于 SIP,似乎无法再设置任何以 DYLD_ 开头的环境变量。 .
为了验证这一点,我构建了一个包含此 VBA 函数和 =ENV("DYLD_LIBRARY_PATH") 的测试电子表格。在单元格 A1 中。
Public Function Env(Value As Variant) As String
Env = Environ(Value)
End Function
我观察到这种行为:
$ launchctl setenv DYLD_LIBRARY_PATH "/Users/${USER}/Library/Group Containers/UBF8T346G9.Office"
$ launchctl getenv DYLD_LIBRARY_PATH # empty output
$ launchctl setenv DYLDLIBRARYPATH "/Users/${USER}/Library/Group Containers/UBF8T346G9.Office" # Same kind of thing, but no underscores
$ launchctl getenv DYLDLIBRARYPATH # works fine
/Users/alchemyst/Library/Group Containers/UBF8T346G9.Office
在我的终端中运行这一系列命令并重新启动 Excel 后,我可以使用测试电子表格检索“DYLDLIBRARYPATH”的内容。我还编辑了 startup.plist 并获得了类似的结果。我似乎遵循了所有正确的步骤,但是当我调用 setenv 时,似乎根本没有设置“DYLD_*”。如果我以 root 身份执行,结果是一样的。
所以基本上我正在寻找我仍然可以在 Mac 上使用这个插件的任何方式。
版本:MacOS Sierra (10.12.3)、Excel 2016 (15.32)、CoolProp 6.10

最佳答案

due to SIP, one can no longer set any environment variable which starts with DYLD_



是和不是。 SIP保护 苹果来自 DYLD_ 的二进制文件; Microsoft 的 Excel 不受 SIP 和 DYLD_INSERT_LIBRARIES 保护按预期工作。

我们怎么知道呢?

有一个图书馆, libGMalloc.dylib可用于监视应用程序的调试分配。从终端执行以下命令:-
DYLD_INSERT_LIBRARIES=/usr/lib/libgmalloc.dylib /Applications/Microsoft\ Excel.app/Contents/MacOS/Microsoft\ Excel

您会看到 Excel 已启动并运行,尽管比平时慢了一点,这是由于插入的库的开销忙于监视所有内存分配。

另外,使用Activity Monitor,查看Excel进程打开的文件,我们可以清楚的看到已经插入到其进程中的libGMalloc.dylib。

enter image description here

我建议使用 DYLD_INSERT_LIBRARIES而不是 DYLD_LIBRARY_PATH并从命令行引用 Coolprop 库,如此处所示。

关于excel - 在 Mac OS X Sierra (CoolProp) 上设置 DYLD_LIBRARY_PATH,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43121458/

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