F# 使用包含 .so 文件的托管 DLL
F# use managed DLL with included .so file
我正在尝试使用包装非托管 a .so
的第 3 方托管 DLL,但我不知道如何避免 Mac [=73 上的 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 页面太多 link 这里
- 将
.so
放在不同的地方 ~/Library
、current directory
、output directory
我什至不知道从哪里开始使用 Jupyter,我可以用 #r
找到 DLL,但是当 DLL 试图找到 .so
时,一切都崩溃了.
软件版本
- Mac OS 10.14.6
- .NET 2.1.401 - Mac
- jupyter 核心 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
文件。请哪位大侠赐教
我正在尝试使用包装非托管 a .so
的第 3 方托管 DLL,但我不知道如何避免 Mac [=73 上的 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 页面太多 link 这里
- 将
.so
放在不同的地方~/Library
、current directory
、output directory
我什至不知道从哪里开始使用 Jupyter,我可以用 #r
找到 DLL,但是当 DLL 试图找到 .so
时,一切都崩溃了.
软件版本
- Mac OS 10.14.6
- .NET 2.1.401 - Mac
- jupyter 核心 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
文件。请哪位大侠赐教