我正在将项目从mono迁移到.NET Core,并使用sqlite库。
以下代码在Mono中正常工作,但在dotnet中不正常:
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Sqlite version: " + Sqlite.LibVersionNumber());
}
}
public static class Sqlite
{
const string LibraryPath = "sqlite3";
[DllImport(LibraryPath, EntryPoint = "sqlite3_libversion_number", CallingConvention = CallingConvention.Cdecl)]
public static extern int LibVersionNumber();
}
问题是,在/usr/lib中我有libsqlite3.so.0如果我将(或在/usr/lib中创建符号链接(重命名为libsqlite3.so(不带.0(,那么在.NET Core中一切都能正常工作。
是否有一些开关也要加载.so.0库?是虫子吗?或者预期的功能?
您应该始终拥有.so,它应该始终是一个链接。
共享对象文件名是如何工作的?
.so.0和.so.0.0.0文件之间的差异