我有一个使用.so文件的.NET核心项目。我使用DllImport()来导入它。我的问题是这个.so有一个依赖libtomcrypt.so,所以它找不到一些符号(未定义的符号: cipher_descriptor)。
我尝试用C语言导入我的.so,如果我指定链接器变量-ltomcrypt,它就能正常工作。
在.NET核心项目中添加对libtomcrypt.so的引用没有任何帮助,因为它是一个本机.so。
有没有办法将libtomcrypt.so链接到dotnet?
发布于 2020-08-24 22:32:31
先试着用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();
}https://stackoverflow.com/questions/63559725
复制相似问题