我正在用 C# 编写一个跨平台的应用程序。它DllImport
用于几个不同的库。它也是 x32 和 x64。它似乎适用于我自己编译的 .dll/.so。我将 x32 共享库放在 x32 子文件夹中,将 x64 共享库放在 x64 子文件夹中。
在通过 .net 框架的 Windows 上,我SetDllDirectory("x32" or "x64")
根据当前运行时调用。在单声道上,通过 windows、linux 或 mac,我DllMap
在 RandomLibrary.dll.config 中使用 ,。它适用于位于 x32 或 x64 目录中的文件。
但是,我也DllImport
用于我没有编写的库,例如 FreeType2。在 Windows 上,我只是将构建的库放在两个子文件夹中。但是在 linux 上,我宁愿使用可以通过友好的本地包管理器安装的 libfreetype6 库。我可以将 DllMap 链接硬编码到/usr/lib/x86_64-linux-gnu/libfreetype
.so.6,但我假设 freetype 文件会根据您使用的发行版而改变。
有没有什么简单的方法可以找到 libfreetype.so 而不管我使用的是什么发行版?