【发布时间】:2019-12-23 22:29:55
【问题描述】:
我正在尝试使用包装非托管 .so 的第三方托管 DLL,但我不知道如何在 Mac OS 上避免 System.DllNotFoundException。
这个库有两个文件
managed_wraper.dllunmanaged_library.so
如果我在一个 linux 机器上放置 .so 并且输出文件夹中的 DLL 可以正常工作,那么在 Mac OS 上就不能正常工作。我也无法让任何平台与 Jupyter 一起使用。
我为 Mac OS 上的 CLI 应用尝试了什么
- 设置 LD_LIBRARY_PATH、DYLD_LIBRARY_PATH、DYLD_FRAMEWORK_PATH、DYLD_FALLBACK_LIBRARY_PATH
- http://christoph.ruegg.name/blog/loading-native-dlls-in-fsharp-interactive.html
- 此处链接的 SO 页面过多
- 把
.so放在各个地方~/Library,current directory,output directory
我什至不知道从哪里开始使用 Jupyter,我可以让它找到带有 #r 的 DLL,但是当 DLL 试图找到 .so 时,一切都崩溃了。
软件版本
- Mac OS 10.14.6
- .NET 2.1.401 - Mac
- jupyter core 4.6.1,jupyter-notebook:6.0.2
【问题讨论】:
-
你有macos相关的.dylib文件吗? Macos 使用的是 dylibs,而不是 so 或 dll 文件,所以如果你想在 macos 上使用原生库,你的库需要捆绑一个。