Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/39.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 在Mac OS X Sierra(CoolProp)上设置DYLD_库_路径_Excel_Macos_Dyld - Fatal编程技术网

Excel 在Mac OS X Sierra(CoolProp)上设置DYLD_库_路径

Excel 在Mac OS X Sierra(CoolProp)上设置DYLD_库_路径,excel,macos,dyld,Excel,Macos,Dyld,免责声明:此问题从一开始就是一个问题 问题 我会把它放在最前面: 是否有人知道如何设置DYLD\u LIBRARY\u路径,使Excel 2016能够在MacOS Sierra上识别该路径? 实际问题(Y):CoolProp的开发人员如何(否则)允许在Excel中使用他们的动态库? 出身背景 我试图让Excel 2016让Mac识别CoolProp插件的使用,基本上可以归结为使用这个启动。plist: <?xml version="1.0" encoding="

免责声明:此问题从一开始就是一个问题

问题 我会把它放在最前面: 是否有人知道如何设置
DYLD\u LIBRARY\u路径
,使Excel 2016能够在MacOS Sierra上识别该路径?

实际问题(Y):CoolProp的开发人员如何(否则)允许在Excel中使用他们的动态库?

出身背景 我试图让Excel 2016让Mac识别CoolProp插件的使用,基本上可以归结为使用这个
启动。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>
我观察到这种行为:

$ 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

由于SIP,不能再设置任何以DYLD开头的环境变量_

是和否。SIP保护苹果二进制文件免受
DYLD
;Microsoft的Excel不受SIP保护,
DYLD\u INSERT\u库
按预期工作

我们怎么知道的

有一个库,
libGMalloc.dylib
,可以用来监视应用程序的调试分配。从终端执行以下操作:-

DYLD_INSERT_LIBRARIES=/usr/lib/libgmalloc.dylib /Applications/Microsoft\ Excel.app/Contents/MacOS/Microsoft\ Excel
您将看到Excel已启动并正常工作,但由于插入的库的开销,它忙于监视所有内存分配,因此运行速度比平时稍慢

此外,使用活动监视器并查看Excel进程的打开文件,我们可以清楚地看到已插入其进程的libGMalloc.dylib

我建议使用
DYLD\u-INSERT\u库
而不是
DYLD\u-LIBRARY\u路径
,并从命令行引用Coolprop库,如下所示

由于SIP,不能再设置任何以DYLD开头的环境变量_

是和否。SIP保护苹果二进制文件免受
DYLD
;Microsoft的Excel不受SIP保护,
DYLD\u INSERT\u库
按预期工作

我们怎么知道的

有一个库,
libGMalloc.dylib
,可以用来监视应用程序的调试分配。从终端执行以下操作:-

DYLD_INSERT_LIBRARIES=/usr/lib/libgmalloc.dylib /Applications/Microsoft\ Excel.app/Contents/MacOS/Microsoft\ Excel
您将看到Excel已启动并正常工作,但由于插入的库的开销,它忙于监视所有内存分配,因此运行速度比平时稍慢

此外,使用活动监视器并查看Excel进程的打开文件,我们可以清楚地看到已插入其进程的libGMalloc.dylib


我建议使用
DYLD\u-INSERT\u库
而不是
DYLD\u-LIBRARY\u路径
,并从命令行引用Coolprop库,如下所示。

这很好-它可以从CLI中工作!有没有只需要一次性干预的方法?我认为使用这种方法会非常困难,因为您通常只需双击电子表格图标,打开Excel并加载正确的库。从进一步的测试中可以看出,在命令行上这样指定环境也适用于
DYLD\u LIBRARY\u PATH
。因此,
DYLD\u INSERT\u库
没有什么特别之处。我们回到了如何在一般情况下实现这一点的问题,而不仅仅是一次调用Excel。至少我现在有了一个部分的解决方案。如果你双击一个应用程序包,macOS将通过plist中指定的包的URI启动任何已注册的应用程序包;如果您有捆绑包的副本,则这可能不是您正在单击的应用程序捆绑包!因此,Launch Services会妨碍您,您需要设置它的环境,也许可以在另一个应用程序中包装调用Excel。这超出了原来问题的范围。我建议一个新的,关于如何设置LS环境。这很好-它可以从CLI工作!有没有只需要一次性干预的方法?我认为使用这种方法会非常困难,因为您通常只需双击电子表格图标,打开Excel并加载正确的库。从进一步的测试中可以看出,在命令行上这样指定环境也适用于
DYLD\u LIBRARY\u PATH
。因此,
DYLD\u INSERT\u库
没有什么特别之处。我们回到了如何在一般情况下实现这一点的问题,而不仅仅是一次调用Excel。至少我现在有了一个部分的解决方案。如果你双击一个应用程序包,macOS将通过plist中指定的包的URI启动任何已注册的应用程序包;如果您有捆绑包的副本,则这可能不是您正在单击的应用程序捆绑包!因此,Launch Services会妨碍您,您需要设置它的环境,也许可以在另一个应用程序中包装调用Excel。这超出了原来问题的范围。我提出了一个新的建议,关于如何设置LS环境。