我正在尝试使用包装非托管.so
的第三方托管 DLL,但我无法弄清楚如何避免 Mac OS 上的System.DllNotFoundException
。
此库有两个文件
managed_wraper.dll
unmanaged_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
哇,我不喜欢电脑:)所以这是适用于 CLI 应用程序的方法
Linux CLI将DLL
和.so
复制到输出文件夹中
Mac OS CLI我不得不将.so
重命名为.dylib
然后,您可以:
- 将包装 DLL 和
libray.so
复制到输出文件夹,并将library.so
重命名为library.dylib
- 将
libray.so
重命名为library.dylib
并设置DYLD_LIBRARY_PATH
在任一情况下,都必须将包装器 DLL 复制到输出文件夹。也许dotnet
只加载.dylib
但我已经看到了您可以在Mac OS上使用.so
文件的位置。请有人启发我