你能在网上链接.so吗

  • 本文关键字:链接 so linux .net-core
  • 更新时间 :
  • 英文 :


我有一个。NET核心项目,该项目使用.so文件。我使用[DllImport((]来导入它。我的问题是这个.so有一个依赖项libtomcrypt.so,所以它找不到一些符号(未定义的符号:cipher_descriptor(。

我尝试在C中导入.so,如果我指定链接器变量-ltomcrypt,它就可以正常工作。

在中添加对libtomcrypt.so的引用。NET核心项目没有帮助,因为它是一个原生的.so.

有什么方法可以将libtomcrypt.so链接到dotnet吗?

尝试先用NativeLibrary加载库。

static class Library
{
const string MyLibrary = "mylibrary";
static Library()
{
NativeLibrary.SetDllImportResolver(typeof(Library).Assembly, ImportResolver);
}
private static IntPtr ImportResolver(string libraryName, Assembly assembly, DllImportSearchPath? searchPath)
{
IntPtr libHandle = IntPtr.Zero;
if (libraryName == MyLibrary)
{
// Try using the system library 'libmylibrary.so.5'
NativeLibrary.TryLoad("libmylibrary.so.5", assembly, DllImportSearchPath.System32, out libHandle);
}
return libHandle;
}
[DllImport(MyLibrary)]
public static extern int foo();
}

与中的本机库交互。NET Core 3.0

最新更新