与Linux中的本机库互操作

Pro*_*ude 7 c# mono dllimport

我正在用C#编写一个应用程序,它是跨平台的.它DllImport用于几个不同的库.它也是x32和x64.它似乎适用于我自己编译的.dll/.so.我将x32共享库放在x32子文件夹中,将x64共享库放在x64子文件夹中.

在Windows上通过.net框架我调用SetDllDirectory("x32" or "x64")取决于当前运行时.在mono上,通过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无论我使用什么发行版?

lup*_*pus 3

对于 Linux 使用 DllImport("libfreetype.so.6") 应该足够了,因为系统应该配置为正确处理它。确保您安装了正确的软件包。如果它不起作用,您可能有一个配置错误的系统:发布您收到的错误、LD_LIBRARY_PATH env var值、/etc/ld.so.conf的内容以及/etc/ld.so.conf.d中的文件/。的输出

/sbin/ldconfig -p |grep freetype

也会很有用的。